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

时间:2012-09-19 10:59:00

标签: 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' )

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

思想?

2 个答案:

答案 0 :(得分: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' );

答案 1 :(得分: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' );