【问题标题】:permalink not working on custom post and category永久链接不适用于自定义帖子和类别
【发布时间】:2018-05-26 22:26:09
【问题描述】:

我正在尝试在 wordpress 中添加 wordpress 自定义帖子类型和类别

   add_action( 'init', 'work_register' );   

    function work_register() {   

    $labels = array( 
        'name' => _x('Work', 'post type general name'), 
        'singular_name' => _x('Work Item', 'post type singular name'), 
        'add_new' => _x('Add New', 'work item'), 
        'add_new_item' => __('Add New Work Item'), 
        'edit_item' => __('Edit Work Item'), 
        'new_item' => __('New Work Item'), 

        'view_item' => __('View Work Item'), 
        'search_items' => __('Search Work'), 
        'not_found' => __('Nothing found'), 
        'not_found_in_trash' => __('Nothing found in Trash'), 
        'parent_item_colon' => '' 
    );   

    $args = array( 
        'labels' => $labels, 
        'public' => true, 
        'publicly_queryable' => true, 
        'show_ui' => true, 
        'query_var' => true, 
        'menu_icon' => get_stylesheet_directory_uri() . '/article16.png', 
        'rewrite' => array( 'slug' => 'work', 'with_front'=> false ), 
        'capability_type' => 'post', 
        'hierarchical' => true,
        'has_archive' => true,  
        'menu_position' => null, 
        'supports' => array('title','editor','thumbnail') 
    );   

    register_post_type( 'work' , $args ); 

    register_taxonomy( 'categories', array('work'), array(
        'hierarchical' => true, 
        'label' => 'Categories', 
        'singular_label' => 'Category', 
        'rewrite' => array( 'slug' => 'categories', 'with_front'=> false )
        )
    );

    register_taxonomy_for_object_type( 'categories', 'work' );
}

我的永久链接结构是:

/%category%/%postname%/

当我从帖子中添加时,它会给我链接

  /category/postname

但是当我从自定义帖子中添加时,它只给我

 /postname 

我也想自定义帖子中的 /category/postname

请指出我哪里错了

【问题讨论】:

    标签: php wordpress custom-post-type


    【解决方案1】:

    更改您的重写以添加工作帖子类型查询变量:

    'rewrite' => array('slug' => 'work/%categories%')
    

    然后过滤post_type_link,将选定的类别插入到永久链接中:

    function custom_work_post_link( $post_link, $id = 0 ){
        $post = get_post($id);  
        if ( is_object( $post ) ){
            $terms = wp_get_object_terms( $post->ID, 'work' );
            if( $terms ){
                return str_replace( '%categories%' , $terms[0]->slug , $post_link );
            }
        }
        return $post_link;  
    }
    add_filter( 'post_type_link', 'custom_work_post_link', 1, 3 );
    

    也有像Custom Post Type Permalinks 这样的插件可以为你做到这一点。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-11-16
      • 1970-01-01
      • 1970-01-01
      • 2013-09-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多