WordPress SEO插件(由Yoast开发)和BuddyPress

时间:2013-02-28 作者:Roman Epicnerd Sharf

我正在使用Yoast的Wordpress SEO插件为我的网站生成面包屑。问题是,当谈到BuddyPress页面时,面包屑无法看到成员的个人资料页面。现在它显示"Home > Members" 在配置文件页面上"Home > Members > Whatever the member\'s name is".

这是我的意思

enter image description here

多亏了@brasofilo,我才得以得到它。这是我的最终代码

add_filter( \'wpseo_breadcrumb_links\', \'fix_bp_prifile_bc\', 10, 2 );
function fix_bp_prifile_bc( $links ) {
    global $bp;
    $user_info = bp_get_user_meta( $bp->displayed_user->id, \'nickname\', true );
    //check if we are viewing the profile  
    if($user_info):
        $links[] = array( \'url\' =>\'\', \'text\' =>$user_info );
    endif;
    return $links;
}

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

这可以使用过滤器wpseo_breadcrumb_links.

在本例中,我使用函数bp_get_user_metabp_loggedin_user_id, 根据需要进行调整。

检查页面是否是成员页面的子页面(在本例中,ID == 2), 我正在使用函数has_parent grabbed from here.

add_filter( \'wpseo_breadcrumb_links\', \'buddy_crumbs_wpse_88889\' );

function buddy_crumbs_wpse_88889( $links )
{
    // apply only in childs of Members page
    // in this example, Members has the ID of 2
    global $post;
    if( !has_parent_wpse_88889( $post, 2 ) )
        return $links;

    $user_info = bp_get_user_meta( bp_loggedin_user_id(), \'nickname\', true );
    $links[] = array( \'url\' => \'\', \'text\' => $user_info );
    return $links;
}

function has_parent_wpse_88889($post, $post_id) 
{
    if ( $post->ID == $post_id ) 
        return true;
    else if ( $post->post_parent == 0 ) 
        return false;
    else 
        return has_parent_wpse_88889( get_post( $post->post_parent ), $post_id );
}
buddypress members breadcrumb

结束