Taxonomy based permalinks

时间:2012-04-10 作者:vvc

在我的网站上,我使用自己的分类法。我希望分类学与permalink相结合。因此,如果一个新闻页面有分类法,permalink就会改变。

像这样:mysite。com/%custom\\u tax%/blog/%postname%,如果是一个页面,请点击:mysite。com/%custom\\u tax%/%postname%

但如果没有我想要的分类法:mysite。com/blog/%postname%,如果它是一个页面:mysite。com/%postname%

我怎样才能轻松地做到这一点?

我已经设置了%custom\\u tax%:

add_filter(\'post_link\', \'custom_tax_permalink\', 10, 3);
add_filter(\'post_type_link\', \'custom_tax_permalink\', 10, 3);


function custom_tax_permalink($permalink, $post_id, $leavename) {
    if (strpos($permalink, \'%custom_tax%\') === FALSE) return $permalink;

    // Get post
    $post = get_post($post_id);
    if (!$post) return $permalink;

    // Get taxonomy terms
    $terms = wp_get_object_terms($post->ID, \'custom_tax\');  
    if (!is_wp_error($terms) && !empty($terms) && is_object($terms[0])) $taxonomy_slug = $terms[0]->slug;
    else $taxonomy_slug = \'\';


    flush_rewrite_rules();
    return str_replace(\'%custom_tax%\', $taxonomy_slug, $permalink);
}

1 个回复
SO网友:Tom J Nowell

尝试以下操作:

function custom_rewrite( $wp_rewrite ) {

    $feed_rules = array(
        \'(.+)/blog/(.+)\'      =>  \'index.php?custom_tax=\'.$wp_rewrite->preg_index(1).\'&post_name=\' . $wp_rewrite->preg_index(2)
    );

    // ( array merge must be done this way, to ensure new rule comes first )
    $wp_rewrite->rules = $feed_rules + $wp_rewrite->rules;
}
// refresh/flush permalinks in the dashboard if this is changed in any way
add_filter( \'generate_rewrite_rules\', \'custom_rewrite\' );
请记住,如果添加/更改此代码,请访问永久链接页面并重新保存,以刷新永久链接。同时拆下flush_rewrite_rules(); 正如斯蒂芬所建议的那样,这是不必要的,也是不好的做法。

结束

相关推荐

Calling Permalinks With PHP

我正在开发一个支持WordPress帖子格式的主题。因此,我使用了一个大if语句,可以在下面找到。我想将我的帖子标题链接到帖子,同时将我的主题保持为XHTML有效</我想在if语句中调用图像(带类),同时将我的主题保持为XHTML有效</如果有人能在下面的代码中添加适当的代码,我将不胜感激_if ( has_post_format( \'video\' )) { echo the_title(); echo the