如果我将Action钩子从插件文件移到主题的函数.php文件,它就会停止工作

时间:2015-12-23 作者:Paresh Radadiya

A.bp_includes 是buddypress的动作并被吸引住了plugins_loaded

function remove_bp_docs() {
    global $wpdb;

    $current_user = get_current_user_id();

    //We are selecting member type before buddypress load so bp_get_member_type won\'t work neither wp_get_object_terms
    $query = "SELECT t.slug FROM {$wpdb->terms} AS t INNER JOIN {$wpdb->term_taxonomy} AS tt ON tt.term_id = t.term_id INNER JOIN {$wpdb->term_relationships} AS tr ON tr.term_taxonomy_id = tt.term_taxonomy_id WHERE tt.taxonomy = \'bp_member_type\' AND tr.object_id = $current_user";

    $member_type = $wpdb->get_var( $query );

    if ( ! empty($member_type ) && \'client\' == $member_type ) {
        remove_action( \'bp_include\', \'bp_docs_init\' );
    }

}
add_action( \'bp_include\', \'remove_bp_docs\', 9 );

1 个回复
最合适的回答,由SO网友:s_ha_dum 整理而成

想想你写了什么:

如果我将acction挂钩从插件文件移动到主题函数,它将停止工作。php文件

以及:

bp_includes 是buddypress的动作并被吸引住了plugins_loaded

问题是,当您将代码移动到functions.php, 这是一个theme 文件主题在插件加载之后加载,因此在plugins_loaded. 查看典型页面加载的挂钩序列:https://codex.wordpress.org/Plugin_API/Action_Reference#Actions_Run_During_a_Typical_Request

事实上,主题可用的第一个挂钩是after_setup_theme.

听起来您的代码必须在插件或mu插件中。

相关推荐

如何在自定义BuddyPress选项卡中向POST循环添加分页

我在BuddyPress个人资料页面中创建了一个名为“视频”的新选项卡。此选项卡包含该用户添加的所有视频帖子。问题是它只显示前12篇文章,而分页没有显示出来。我确实尝试包含主题提供的分页代码,但没有成功。备注:我正在使用一个名为“VideoTube”的主题要分页的post循环来自称为“视频”的自定义post类型主题提供的原始分页代码为<?php do_action( \'mars_pagination\', null );?>下面的代码是从我的函数中提取的。子主题文件夹中的php文件。提前感谢