如何在所有操作和筛选之前检查当前用户?

时间:2020-03-30 作者:Stefan S

我正在开发一个包含50多个动作和过滤器的插件。所有操作和筛选器仅适用于具有特定用户元(b2b)的用户。我想在一切发生之前检查这个用户元我该怎么做?像get\\u current\\u user\\u id这样的简单检查在init之前不起作用。

我也不想检查这个内部非常单一的操作和过滤函数,这似乎非常低效。

function __construct() {

        // This function user check will not work. What can I do?
        if ($this->is_user_b2b()){

            // Add conversations to My account WooCommerce user menu
            add_filter( \'woocommerce_account_menu_items\', array($this, \'b2bking_my_account_add_conversations\'), 10, 1 );
            // Add conversations endpoint
            add_action( \'init\', array($this, \'b2bking_conversations_endpoint\') );
            // Add content to endpoint
            add_action( \'woocommerce_account_conversations_endpoint\', array($this, \'b2bking_conversations_endpoint_content\') );
            // Add content to individual conversation endpoint
            add_action( \'woocommerce_account_conversation_endpoint\', array($this, \'b2bking_conversation_endpoint_content\') );
/* 50 MORE ACTIONS AND FILTERS */

1 个回复
SO网友:Stefan S

我解决了这个问题,将所有操作和过滤器放在插件中,插件很早就启动了。像这样:

add_action(\'plugins_loaded\', function(){
      if ($this->is_user_b2b()){
            add_action(.....
            add_filter(.....

相关推荐

如何输出所有的Apply_Filters和Do_action?

我想输出所有apply\\u过滤器和do\\u操作,以向用户提供它们的概述。如果我使用代码add_filter( \'wpErpOs_testFilter\', \'wpErpOs_testFilter_callback\', 10, 1 ); function wpErpOs_testFilter_callback( $testVar ) { $testVar[] = \"GM\"; return $testVar; } $testVar = array(\"V