php 带有在某些产品上禁用自身选项的插件

c90pui9n  于 2023-02-18  发布在  PHP
关注(0)|答案(1)|浏览(88)

我正在创建一个插件,它对woocommerce中的产品页面进行了一些更改,如果用户想对某些产品禁用它,我想添加一个复选框。我设法在产品编辑页面上插入了复选框,但在加载插件之前是否可以验证它是否被选中?
我试过了,但是什么也没发生:

global $product;
if ($product) {
   $customAttributes = get_post_meta( $product->get_id(), 'custom_attributes', true );
   if ( isset($customAttributes['disabled']) && $customAttributes['disabled'] == 1 ) {
      return;
   }
}

我搜索了很多,尝试了其他的方法,但是我没有找到解决办法。

cqoc49vn

cqoc49vn1#

我总是创建一个插件,并把它放在mu-plugins文件夹中,这样你就可以在加载任何插件之前进行检查。
你能试试option_active_plugins钩子吗?

add_filter( 'option_active_plugins', function( $plugins ){

    global $product;

    if ( $product ) {
        $customAttributes = get_post_meta( $product->get_id(), 'custom_attributes', true );

        if ( isset( $customAttributes['disabled'] ) && $customAttributes['disabled'] == 1 ) {
            $unload_plugins[] = "my-plugins/my-plugin.php";
            $plugins = array_diff( $plugins, $unload_plugins );
        }
    }

    return $plugins;
} );

如果需要,可以将其 Package 在wpinit操作中,但是get_post_meta应该在那里工作。

相关问题