7

因无人回复而重发。

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

我有一个名为设计的自定义帖子类型,它使用自定义 URL 重写。它采用基本页面 /design/ 并向其添加设计名称,例如 /design/a-design/。默认情况下,Wordpress SEO 中的规范是 /design/ 页面。

我想做的是编写一个函数来确定它是否是设计页面并返回不同的规范。我可以通过这样做来测试它是否是设计页面,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' )

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

想法?

4

2 回答 2

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' );
于 2012-11-22T13:51:35.783 回答
6

嗨,我无法回答上面的帖子,所以我只做另一个。

我尝试使用stealthyninja 的答案来解决类似的问题,它几乎奏效了。除了最后一部分:空的 else 语句。如果规则不匹配,它不会呈现任何输出。

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

以下代码片段解决了我的问题:

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' );
于 2015-01-23T12:55:05.457 回答