将帖子ID放在自定义帖子类型URL上

时间:2020-06-19 作者:Bikram

我想得到这个链接结构mysite。com/sa/post slug/post\\U id/在我的自定义帖子类型上。

这是post\\u类型:

// ex_article Post type
add_action( \'init\', \'ex_article_init\' );

function ex_article_init() {
    $args = array(
        \'labels\' => array(
            \'name\' => _x( \'Article\', \'Post type general name\', \'textdomain\' ),
            \'menu_name\' => _x( \'Ex Article\', \'Admin Menu text\', \'textdomain\' )
        ),
        \'public\' => true,
        \'show_ui\' => true,
        \'hierarchical\' => false,
        \'rewrite\' => array(\'slug\' => \'sa\', \'with_front\'=>false ),
        ---
        ---
        ---
        );
    
    register_post_type( \'ex_article\', $args );
}
在permalink设置中,我使用Post Name : mysite.com/sample-post/. 使用自定义结构对我来说不是一种选择,我需要避免它,而且它对自定义帖子类型没有任何作用。

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

实际上,这很容易:

更改生成的permalink结构,使其以post ID而不是post slug结尾(但仍包含post slug):

// After you registered the post type:
register_post_type( \'ex_article\', $args );

// .. run this code:
global $wp_rewrite;
$wp_rewrite->extra_permastructs[\'ex_article\'][\'struct\'] = \'sa/%ex_article%/%post_id%\';
%post_id%) 在生成的具有正确帖子ID的永久链接URL中:

add_filter( \'post_type_link\', function ( $post_link, $post ) {
    if ( $post && \'ex_article\' === $post->post_type ) {
        return str_replace( \'%post_id%\', $post->ID, $post_link );
    }
    return $post_link;
}, 10, 2 );
flush/regenerate the rewrite rules! 只需访问permalink设置页面,无需单击;“保存”;按钮

相关推荐

Problem with permalinks

我已经更改了类别的基本名称,现在它是“博客”,工作正常。但当我通过/blog/%category%/%postname%/更改结构时。显示404。如果我删除结构中的blog,它会再次工作,但我想使用blog word。问题出在哪里?非常感谢。