Intereting Posts
получить все теги из категории Удаление пользовательских полей при удалении сообщений Пользовательские мета-ящики: несколько полей в повторяемом поле Удаление правил из .htaccess Помощь автора шаблона. Как проверить, существует ли поле в профиле? Преобразовать ID в URL? Как перейти от подписки Mark Jaquith к комментариям плагина к новой версии Gurken? Как я могу сделать ссылку меню видимой только для администраторов (без плагинов)? Если тег существует, то эхо один раз Как перезагрузить определенную регистрационную форму роли на ошибках проверки? Как избежать конфликтов с db.php / $ wpdb и другими плагинами, которые решили использовать их? WordPress 3.3.1 шаблон одиночной записи Пользовательские поля регистрации woocommerce Получить идентификатор строки из базы данных одним нажатием кнопки Как установить файл .MO (языковой файл) для использования в качестве части темы?

Пользовательская структура Permalink с пользовательскими типами сообщений с использованием пользовательских таксономий

После довольно исчерпывающего поиска я в тупике.

У меня есть пользовательский тип сообщения WordPress с именем: listings. В списках имеются таксономии, называемые службами и областями.

Структура по умолчанию

/ реклама / имя пост%%

Я пытаюсь создать структуру, которая выглядит так:

/% услуга% /% площадь% /% имя% после

Я смог добиться чего-то близкого, используя плагин Custom Post Type Permalinks, который дает мне этот рабочий URL:

/ перечисления /% услуга% /% площадь% /% имя% после

И затем использовал код

function gp_remove_cpt_slug( $post_link, $post, $leavename ) { if ( 'listing' != $post->post_type || 'publish' != $post->post_status ) { return $post_link; } $post_link = str_replace( '/' . $post->post_type . '/', '/', $post_link ); return $post_link; } add_filter( 'post_type_link', 'gp_remove_cpt_slug', 10, 3 ); 

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

Solutions Collecting From Web of "Пользовательская структура Permalink с пользовательскими типами сообщений с использованием пользовательских таксономий"

Простое решение будет использовать аргументы rewrite и 'with_front при регистрации типа сообщения. Попробуй это..

 'with_front' => false, 'rewrite' => array( 'slug' => '%services%/%areas%'), 

Затем добавьте фильтр post_type_link чтобы заменить теги на термины.

 function wpse277778_rewrite_urls( $url, $post ) { if ( 'listings' == get_post_type( $post ) ) { $services = wp_get_post_terms( $post->ID, 'services' ); $areas = wp_get_post_terms( $post->ID, 'areas' ); $url = str_replace( '%services%', $services[0]->slug, $url ); $url = str_replace( '%areas%', $areas[0]->slug, $url ); } return $url; } add_filter( 'post_type_link', 'wpse277778_rewrite_urls', 10, 2 ); 

Обратите внимание, что это код barebone, и вам нужно выполнить некоторую проверку с помощью условных тегов, чтобы вывести ошибку без ошибок $url . Кроме того, вы должны установить службы и область по умолчанию, если никакие условия не связаны.