固定链接:自定义帖子类型->自定义分类->自定义子分类->帖子

时间:2019-01-30 作者:Jojo

我正在构建一个自定义帖子类型及其各自的自定义分类法。

代码如下:

add_action( \'init\', \'register_my_types\' );

function register_my_types() {

    register_post_type( \'help\',
        array(
            \'labels\' => array(
                \'name\' => __( \'Help Manager\' ),
                \'singular_name\' => __( \'Help\' )
            ),
            \'public\' => true,
            \'has_archive\' => true,
            \'rewrite\' => array(
                \'slug\' => \'help/%help_categories%\',
                \'with_front\' => true
              )
        )
    );

    register_taxonomy( \'help_categories\', array( \'help\' ), array( 
            \'hierarchical\' => true, 
            \'label\' => \'Help Categories\',
            \'rewrite\' => array(
                \'slug\' => \'help\',
                \'with_front\' => true
              )
        )
    );
}
我正在重写,以便将其包含在一个漂亮的URL中:

function so23698827_add_rewrite_rules( $rules ) {
    $new = array();
    $new[\'help/([^/]+)/(.+)/?$\'] = \'index.php?help=$matches[2]\';
    $new[\'help/(.+)/?$\'] = \'index.php?help_categories=$matches[1]\';

    return array_merge( $new, $rules ); // Ensure our rules come first
  }
  add_filter( \'rewrite_rules_array\', \'so23698827_add_rewrite_rules\' );

  /**
   * Handle the \'%project_category%\' URL placeholder
   *
   * @param str $link The link to the post
   * @param WP_Post object $post The post object
   * @return str
   */
  function so23698827_filter_post_type_link( $link, $post ) {
    if ( $post->post_type == \'help\' ) {
      if ( $cats = get_the_terms( $post->ID, \'help_categories\' ) ) {
        $link = str_replace( \'%help_categories%\', current( $cats )->slug, $link );
      }
    }
    return $link;
  }
  add_filter( \'post_type_link\', \'so23698827_filter_post_type_link\', 10, 2 );
我想在URL中包含任何子类别。例如,我有以下结构:

自定义帖子类型主类别子类别示例帖子应为以下www.domain。com/custom\\u post\\u type/main category/sub category/sample post

你能帮我实现以上目标吗

1 个回复
SO网友:jasubal

您可以尝试使用此插件(或查看其代码)

https://wordpress.org/plugins/wp-better-permalinks/

它允许您将自定义友好的permalinks结构更改为Custom Post Type > Taxonomy > Post and Custom Post Type > Taxonomy 而不是默认的WordPress结构。它提供了不同的permalinks结构模式:Custom Post Type>Single Term(或Term tree)>PostCustom Post Type>Post(未选择术语时)Custom Post Type>Single Term(或Term tree)

这对我解决这个问题有很大帮助。。。

相关推荐

Problem with permalinks

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