Вопрос: Изменить постоянную ссылку типа поста в соответствии с категорией

Фактически: http: //localhost /wp /subtitle /title-shahbaz /

Тип записи : subtitle
Категория этого сообщения: внутренняя
Хотите показывать везде, а также в строке URL: http: //localhost /wp /internal-subtitle /title-shahbaz /

Снимок экрана панели администратора

Снимок экрана сайта

add_action( 'init', 'subtitle_post_type' );function subtitle_post_type(){$labels = array(    'name'                  => 'Subtitles',    //more labels goes here);$args = array(    'label'                 => 'subtitle',    'labels'                => $labels,    'supports'              => array('comments'),    'hierarchical'          => false,    'public'                => true,    'show_ui'               => true,    'show_in_menu'          => true,    'menu_position'         => 5,    'show_in_admin_bar'     => true,    'show_in_nav_menus'     => true,    'can_export'            => true,    'has_archive'           => false,    'exclude_from_search'   => false,    'publicly_queryable'    => true,    'capability_type'       => 'page',    'taxonomies' => array( 'category' ));register_post_type( 'subtitle', $args );} $labels = array(    'name'             => __('Categories', 'taxonomy general name' ),    //more labels goes here);$args = array( 'hierarchical'      => true, 'labels'            => $labels, 'show_ui'           => true, 'show_admin_column' => true, 'query_var'         => true, 'rewrite'           => array( 'slug' => 'type' ), ); register_taxonomy( 'type', array( 'subtitle' ), $args );

Этот код я пытаюсь работать корректно для wp-admin, но не для лицевой стороны

function append_query_string( $url, $post ,$leavename, $sample ) {$terms = wp_get_post_terms( $post->ID, 'type' );$post_type= $post->post_type;if( $terms[0]->name == 'internal'  && 'subtitle' ==  $post_type ) {    return get_site_url( null, "/{$terms[0]->name}-{$post_type}/{$post->post_name}/" );}//}return $url;}add_filter( 'post_type_link', 'append_query_string', 11, 4 );

Ответы и комментарии:

Это должен быть / cpt-category / title или вы можете использовать / cpt / category / title?
Создан 06-03-2018 06:12 kero

Мне нужно / Category-CPT / название.
Создан 06-03-2018 07:07 sharaz ghouri

Это хорошо, но это относится ко всем категориям этого поста. Я хочу настроить только один, а не все.
Создан 06-03-2018 04:01 sharaz ghouri

Измените переписывание, чтобы добавить запрос курса var:
'rewrite' => array ('slug' => 'course /% course%')

Затем отфильтруйте post_type_link, чтобы вставить выбранный курс в постоянную ссылку:
функция wpa_course_post_link ($ post_link, $ id = 0) {
    $ post = get_post ($ id);
    if (is_object ($ post)) {
        $ term = wp_get_object_terms ($ post-> ID, 'course');
        if ($ term) {
            return str_replace ('% course%', $ rules [0] -> slug, $ post_link);
        }
    }
    вернуть $ post_link;
}
add_filter ('post_type_link', 'wpa_course_post_link', 1, 3);

Есть также плагины, такие как пользовательские постоянные ссылки типа поста, которые могут сделать это для вас.
Создан 06-03-2018 09:17 Dharmishtha Patel43811