用于自定义分类的固定链接重写

时间:2012-10-14 作者:user1500556

我添加了一个名为“Boards”的自定义分类法,代码如下

function add_custom_taxonomies() {

    register_taxonomy(\'board\', \'post\', array(
        \'labels\' => array(
            \'name\' => _x( \'Boards\', \'taxonomy general name\' ),
            ~snipped~
        ),
        \'rewrite\' => array(
            \'slug\' => \'board\',
            \'with_front\' => false,
            \'hierarchical\' => true
        )
    ));
}

add_action( \'init\', \'add_custom_taxonomies\', 0 );
如果我有两块板的名称都是“我的板”,那么URL将是mydomain。com/boards/my board/mydomain。com/boards/my-board-2/

我更喜欢使用board/term ID,这样URL就是mydomain。com/boards/15/2)mydomain。com/板/16/

可能的

1 个回复
最合适的回答,由SO网友:Milo 整理而成

这项工作有几个部分需要完成。

首先,我们注册分类法:

function wpa69163_register_txonomy() {
    register_taxonomy(\'board\', \'post\', array(
        \'labels\' => array(
            \'name\' => _x( \'Boards\', \'taxonomy general name\' ),
        ),
        \'rewrite\' => array(
            \'slug\' => \'board\',
            \'with_front\' => false
        )
    ));
}
add_action( \'init\', \'wpa69163_register_txonomy\', 0 );
接下来,我们必须将过滤器添加到term_link 要生成URL,请使用term_id 对于我们的税务条款:

function wpa69163_term_link( $termlink, $term, $taxonomy ){
    if( \'board\' == $taxonomy )
        return home_url() . \'/board/\' . $term->term_id . \'/\';
    return $termlink;
}
add_filter( \'term_link\', \'wpa69163_term_link\', 10, 3 );
最后,我们必须截取对税务条款的任何查询,并转换board 将变量从ID查询回slug,以便WordPress能够加载正确的帖子:

function wpa69163_boards_query( $query ) {
    if( isset( $query->query_vars[\'board\'] ) ):
        if( $board = get_term_by( \'id\', $query->query_vars[\'board\'], \'board\' ) )
            $query->query_vars[\'board\'] = $board->slug;
    endif;
}
add_action( \'parse_query\', \'wpa69163_boards_query\' );

结束

相关推荐

Taxonomy slug by term ID

我正在尝试修改wp\\u nav\\u菜单以显示术语缩略图。要获得这些缩略图,我需要术语ID和分类slug:$thumbnailimg = get_the_term_thumbnail($term_id, \'$taxonomy\', \'medium\');我设法通过以下方式获得了它的术语ID:$term_id = (int)$item->object_id;但现在我需要检查该对象是否是一个术语,以及该术语属于哪个自定义分类法(我有两个)。有人能帮我解决这个问题吗?:)