使用 Widget Logic Plugin 根据条件隐藏 Widget

Hide Widget based on condition using Widget Logic Plugin

我的网站 (http://www.chicagokaraokenight.com/wordpress) 是一个卡拉 OK 目录,酒吧可以在其中免费列出卡拉 OK 之夜或升级到高级或特色高级列表(付费套餐)以获得更强大的配置文件。

作为升级到付费包的好处的一部分,我想让付费列表中的一些小部件消失。

我的主题作者 (Listify) 推荐了插件 Widget Logic 并表示如下:

Use https://wordpress.org/plugins/widget-logic/ to show/hide a widget depending on certain criteria.

Using something like:

wc_paid_listings_get_user_package( $package_id )

我仍然不太清楚我应该编辑逻辑来表达什么,希望有人能提供帮助。我知道如何获取包裹 ID(如果我将鼠标悬停在产品页面上的包裹上,我可以看到它们)。

我希望基于付费包列表隐藏的小部件是 Google 广告、最近的列表和特色列表。

谢谢!

更新: WC 付费列表插件开发人员在我提到免费包 ID 是 971 后给了我这个代码和信息:

global $post;
$used_package = get_post_meta( $post->ID, '_package_id', true );
if ( 971 === $used_package ) {
// Free
}

You could wrap this in a custom function to use in widget logic:

function job_was_posted_with_package( $package_id ) {
global $post;
$used_package = get_post_meta( $post->ID, '_package_id', true );
return $package_id == $used_package;
}

Called via:

job_was_posted_with_package( 971 );

我现在有我需要的东西吗?谁能帮我确定什么需要进入 functions.php,什么应该进入 Widget Logic 等等?

Widget 逻辑在内部工作的形式上非常简单。

我假设您已经创建了一个小部件,您需要做的是制作或使用 returns 一个 Boolean

的函数
function is_paid_member(){
   // Verification Code here

   return TRUE;
}

然后将 is_paid_member() 放置在受影响的 Widget 的 widget 逻辑字段中。

如果您可以为验证方法打印一些代码,我很可能可以编辑答案以使其可行。

请澄清以下几点,Widget 是否始终在管理界面中可用?如果是,那么它将超出 Widget Logic 范围,这会影响在前端显示的大部分激活的 Widget。

Per Mike Jolley 来自 WP 付费列表,正确的代码是:

function job_was_posted_with_package( $package_id ) {
global $post;
$used_package = get_post_meta( $post->ID, '_package_id', true );
return $package_id == $used_package;
}

应放在 functions.php 文件中。

然后:

( ! job_was_posted_with_package( ID ) && ! job_was_posted_with_package( ID ) )

job_was_posted_with_package( ID )

应该是在您想要 show/hide 的小部件上输入到小部件逻辑的条件。