在Yoast Wordpress SEO插件中设置自定义规范URL

Ian*_*Ian 7 php wordpress seo wordpress-plugin

由于没有回复而转贴.

我在使用Wordpress SEO API设置自定义规范标题时遇到了一些麻烦:http://yoast.com/wordpress-seo-api-docs/

我有一个名为designs的自定义帖子类型,它使用自定义URL重写.它需要基页/设计/并添加设计名称,如/ design/a-design /.Wordpress SEO中的规范默认为/ design/page.

我想要做的是编写一个函数来确定它是否是一个设计页面并返回一个不同的规范.我可以测试它是否是一个设计页面if ($design == ""){,我尝试使用自定义永久链接URL,但该功能只是完全删除了规范.

这是我的基本功能:

function design_canonical(){
    if ($design == "") {    
        // Leave blank and Yoast SEO will use default canonical for posts/pages
    }
    else {
        return $design['detailslink'];
    }
}
add_filter( 'wpseo_canonical', 'design_canonical' )
Run Code Online (Sandbox Code Playgroud)

很明显做错了什么,但我不完全确定是什么.

思考?

ste*_*nja 11

你可以尝试类似的东西:

function design_canonical($url) {
    global $post;

    if ( get_post_type( $post->ID ) == 'design' ) {
        return site_url( '/design/' . $post->post_name );
    } else {
        // Do nothing and Yoast SEO will use default canonical for posts/pages
        return $url;
    }
}
add_filter( 'wpseo_canonical', 'design_canonical' );
Run Code Online (Sandbox Code Playgroud)


Rap*_*ael 6

嗨,我无法回答上面的帖子所以我只是再做一个.

我试图使用stealthyninja的答案来解决类似的问题,它几乎起作用了.除了最后一部分:空的else语句.如果规则不匹配,则不呈现输出.

也许Yoast在过去的两年内更新了他的插件,所以我想我应该在这里提一下.

以下Code-Snippet解决了我的问题:

function design_canonical($url) {
    global $post;

    if ( get_post_type( $post->ID ) == 'design' ) {
         return site_url( '/design/' . $post->post_name );
    } else {
         return $url;
    }
}
add_filter( 'wpseo_canonical', 'design_canonical' );
Run Code Online (Sandbox Code Playgroud)