自定义帖子类型和分类的自定义固定链接

时间:2013-07-09 作者:Jordan

我已经为此挣扎了几个小时了。

我正在尝试获取此URL结构:
example.com/business/%custom-tax-name%/%custom-post-name%/
我所说的海关税名称不是指分类法的名称(“位置”),而是指为特定职位选择的值,即城市名称。所以,
example.com/business/long-island-city/business-name

example.com/business/phoenix/business-name/

到目前为止,我已经制定了自定义分类法:

$singular = \'Merchant Location\';
$plural = \'Merchant Locations\';
$taxonomy_args = array(
    \'rewrite\' => array(
        \'slug\' => \'business-location\',
        \'with_front\' => FALSE,
        \'hierarchical\' => FALSE
    )
);  
// Register taxonomy ...
并更改了post_type_link 滤器

function filter_business_permalinks($post_link, $post, $leavename, $sample) {

if ($post->post_type == \'my_custom_post_type\') {
    $terms = get_the_terms($post->ID, \'my_custom_taxonomy\');
     foreach ($terms as $term) {
         $post_link = str_replace(\'business/\', \'business/\'. $term->slug .\'/\', $post_link);
         break;
     }

return $post_link;
}
add_filter(\'post_type_link\', \'filter_business_permalinks\', 10, 4);
在那之后,得到的URL很好,这正是我想要的,所以过滤器功能工作得很好。但是,当我单击URL时,它会转到以下位置:
example.com/business/long-island-city/long-island-city/business-name
生成404。

这可能是什么原因造成的,我如何修复它?

非常感谢您的帮助。

Note:
我不想要这样的URL结构:
example.com/business/location/long-island-city/business-name/
在URL中具有分类名称。

1 个回复
SO网友:Milo

这是我用来获得你想要实现的目标的方法。

首先,注册您的位置分类:

register_taxonomy(
    \'location\',
    array( \'business\' ),
    array(
        \'rewrite\' => array( \'slug\' => \'business-location\' )
    )
);
接下来,注册业务职位类型。这里需要注意的重要一点是%location% 重写slug中的标记。我们将使用它替换为post_type_link 功能:

register_post_type(
    \'business\',
    array(
        \'label\' => \'Business\',
        \'public\' => true,
        \'rewrite\' => array( \'slug\' => \'business/%location%\' ),
        \'hierarchical\' => false
    )
);
现在,位置术语中要交换的函数:

function wpa_business_permalinks( $post_link, $id = 0 ){
    $post = get_post($id);
    if ( is_object( $post ) && $post->post_type == \'business\' ){
        $terms = wp_get_object_terms( $post->ID, \'location\' );
        if( $terms ){
            return str_replace( \'%location%\' , $terms[0]->slug , $post_link );
        }
    }
    return $post_link;
}
add_filter( \'post_type_link\', \'wpa_business_permalinks\', 1, 2 );

结束

相关推荐

Keep permalinks in Wordpress

有没有办法设置我的永久链接以保持其精确链接。如果我有这样的帖子http://blog.rigo.ro/?p=11, 然后我希望每次我编辑帖子时都能保留这个链接。我已经安装了修订控制插件,并将其设置为不保留修订。有什么办法吗?我想保留这种格式的链接。编辑:我又看了一遍,永久链接保持着它们的链接,但每次我编辑它时,它都会向数据库中添加一个新版本,下一篇文章的编号会更高。如果我编辑当前帖子3次(blog.rigo.ro/?p=11),下一篇帖子将是blog。里戈。ro/?p=14。现在,我的问题是如何保持所有帖