BuddyBoss中如何为自定义membersloop创建专属固定链接?
实现BuddyBoss自定义收藏用户列表的固定链接
步骤1:添加自定义重写规则与路由识别
首先需要让WordPress识别/members/favorited这个固定链接,将以下代码添加到主题functions.php或自定义插件中:
function register_favorited_members_rewrite_rule() { // 注册重写规则,将members/favorited指向成员页面并传递自定义标识参数 add_rewrite_rule( '^members/favorited/?$', 'index.php?bp_component=members&action=favorited', 'top' ); } add_action('init', 'register_favorited_members_rewrite_rule'); // 让WordPress识别自定义的action查询参数 function add_favorited_query_var($vars) { $vars[] = 'action'; return $vars; } add_filter('query_vars', 'add_favorited_query_var');
步骤2:修改现有过滤器,仅在自定义链接下生效
调整你已有的成员循环过滤函数,让它只在访问/members/favorited时才触发,避免影响其他成员页面:
function membersloop_show_favorites( $querystring = false, $object = false ) { // 仅针对成员循环,且当前是收藏用户页面时生效 if ($object != 'members') { return $querystring; } // 判断当前是否为收藏用户页面 $current_action = get_query_var('action'); if ($current_action !== 'favorited') { return $querystring; } // 测试收藏用户ID,后续可从数据库读取实际数据 $ids = array(89, 113); $ids = implode( ',', $ids ); $args = wp_parse_args($querystring); if ( ! empty($args['include']) ) { $args['include'] = $args['include'] . ',' . $ids; } else { $args['include'] = $ids; } $querystring = build_query( $args ); return $querystring; } add_action( 'bp_ajax_querystring', 'membersloop_show_favorites', 20, 2 );
步骤3:自定义模板(可选)
如果需要为收藏用户页面定制布局,可在主题的buddypress/members目录下创建members-favorited.php,复制默认members-loop.php的内容并修改。然后通过以下代码指定该模板:
function favorited_members_template($template) { if (get_query_var('action') === 'favorited' && bp_is_members_component()) { $custom_template = get_stylesheet_directory() . '/buddypress/members/members-favorited.php'; if (file_exists($custom_template)) { return $custom_template; } } return $template; } add_filter('bp_template_include', 'favorited_members_template');
步骤4:刷新固定链接
进入WordPress后台设置→固定链接页面,直接点击「保存更改」,让WordPress刷新重写规则,确保新的固定链接生效。
内容的提问来源于stack exchange,提问作者tim
相关产品推荐
相关产品推荐

