Пользовательский тип записи / структура URL-адреса таксономии

#wordpress #seo #custom-post-type

#wordpress #seo #пользовательский тип записи

Вопрос:

Я быстро просмотрел похожие вопросы, но большинство из них, похоже, на самом деле не отвечают на мой вопрос.

У меня есть пользовательский тип сообщения, который называется Products. Внутри у меня есть таксономии, такие как тип комнаты, тип мебели, Материал и т. Д. И т. Д.

Для сайта требуется действительно конкретная структура URL-адресов, чтобы соответствовать его стратегии SEO.

На данный момент я получаю что-то вроде этого:

 /room-type/handles/bathroom
/room-type/handles/kitchen
/room-type/handles/modern
  

По сути, мне нужно удалить тип номера. Я попытался установить для «with_front» значение false при регистрации таксономии, но безуспешно.

Ниже приведен мой текущий код, любая помощь очень ценится.

 register_taxonomy(

    'room-type',
    'products',

    array(

        'label' => __( 'Room Type' ),
        'rewrite' => array( 

            'slug' => 'room-type',
            'with_front' => true,
            'hierarchical' => true,

        ),

        'hierarchical' => true,

    )

);
  

Обновить

Итак, я немного покопался и нашел эту страницу: https://wordpress.stackexchange.com/questions/5413/need-help-with-add-rewrite-rule

… и это код, с которым я закончил, который на данный момент кажется самым близким к тому, что я придумал:

 function sb_rewrites() {

    add_rewrite_rule( 'handles/([^/] )/?', 'index.php?room-type=$matches[1]', 'top' );

}

add_action( 'init', 'sb_rewrites', 10, 0 );

function strip_room_type( $link, $term, $taxonomy ){

    if ( $taxonomy !== 'room-type' )

        return $link;

    return str_replace( 'room-type/', '', $link );

}

add_filter( 'term_link', 'strip_room_type', 10, 3 );
  

Спасибо!

Ответ №1:

Насколько я понимаю ваш вопрос, я не уверен, что есть идеальный способ удалить эту таксономическую ошибку. WordPress должен знать, какую под-таксономию вы запрашиваете в URL, поэтому ему нужен какой-то идентификатор. Однако, похоже, что в ответе на аналогичный вопрос может быть обходной путь:

https://wordpress.stackexchange.com/questions/21076/remove-taxonomy-base-or-term-from-url

По сути, определение подробных правил перезаписи, чтобы «вытеснить» термин. Но это может вызвать проблемы, которые лучше объяснены в принятом ответе здесь:

https://wordpress.stackexchange.com/questions/42120/remove-slug-in-taxonomy-url

Комментарии:

1. Спасибо за это, приятель! Я попытался использовать одно из решений, описанных в первой ссылке — к сожалению, похоже, что оно нарушает работу моего сайта. Придется копать немного глубже!