Intereting Posts
Расширение допустимых тегов HTML в комментариях? WordPress заменяет знаки двойного минуса в заголовке сообщения, как отключить его? Разбиение страницы с WP_Query не работает Каталог плагинов «Последнее обновление» не изменен после первоначальной фиксации? Ошибка «Невозможно создать новое изображение» в редакторе изображений в WordPress Страницы вложений для мультимедиа, дающие 404 настроить таксономию Установите текст по умолчанию для the_search_query (); Использовать значения массива ACF в коротком коде Как добавить Javascript в заголовок всех почтовых страниц и только почтовые страницы Как установить WPMU с композитором? Условное приветственное сообщение с использованием текущей информации пользователя Изменить тип возможности типа сообщения, зарегистрированного плагином Отсутствует параметр боковой панели "fix" – before_content категория permalinks

Пользовательский тип сообщения и ошибка повторной регистрации таксономии

Следующий код адаптирован из ответа Яна Фабри. Смешивание пользовательских типов сообщений и таксономии переписывают структуры?

<?php add_filter('post_type_link', 'client_area_permalink', 10, 4); function client_area_permalink($post_link, $post, $leavename, $sample) { if ( false !== strpos( $post_link, '%client_category%' ) ) { $glossary_letter = get_the_terms( $post->ID, 'client_category' ); $post_link = str_replace( '%client_category%', array_pop( $glossary_letter )->slug, $post_link ); } return $post_link; } ?> 

Когда я иду добавить новое сообщение, array_pop выдает ошибку. Я считаю, что это связано с тем, что с этой почтой не существует таксономии. Ошибка array_pop

Как я могу исправить эту ошибку? Я подумал о get_post_permalink как использовать get_post_permalink в качестве базы, потому что здесь post_type_link .

Чтобы избежать такой ошибки, вам нужно будет проверить, является ли значение $ glossary_letter массивом или нет. Поскольку get_the_terms () возвращает false при ошибке, вы можете просто проверить, является ли флагом $ glossary_letter ложным и установить его в пустой массив, чтобы успокоить array_pop (), не получив эту ошибку.

 <?php add_filter('post_type_link', 'client_area_permalink', 10, 4); function client_area_permalink($post_link, $post, $leavename, $sample) { if ( false !== strpos( $post_link, '%client_category%' ) ) { $glossary_letter = get_the_terms( $post->ID, 'client_category' ); // adding check and reset if ( !$glossary_letter ) { $glossary_letter = array(); } // continue as you were $post_link = str_replace( '%client_category%', array_pop( $glossary_letter )->slug, $post_link ); } return $post_link; } ?>