Intereting Posts
Ошибка пользовательского сообщения для сохранения 500 Могу ли я добавить / заменить изображение WordPress в Личном кабинете Сделать (сообщение) запросить ссылку с кликом Как изменить предыдущие и следующие страницы на страницах блога, чтобы включить «предыдущие» и «следующие» перед ссылками? Настроить запрос с несколькими категориями в пользовательском порядке? Почему wp_get_object_terms добавляет период после вывода терминов? Использование одного объекта WP_Query в цикле другого объекта WP_Query Каков самый простой способ резервного копирования моей базы данных WordPress? Статьи являются текстовыми только в любой категории, а не в HTML Правильный и безопасный способ доступа к пользовательской базе данных SQL в пользовательском файле шаблона PHP Проверьте время сервера для отображения записей SQL – Radio Station DJ Rotator Plugin Пользовательский пост условный для родителей и детей Single.php? если значение null или int (0) равно 0 Где скрывается короткий код? Как рандомизировать отображаемое имя при регистрации?

Изменить название должности, если сообщение имеет определенную категорию

В основном, я пытаюсь добиться того, чтобы название изменилось с позиций, которые находятся в категории № 30.

Мой код:

function adddd($title) { if(has_category('30',$post->ID)){ $title = 'Prefix '.$title; } return $title; } add_action('the_title','adddd'); 

Код работает, но имеет одну проблему. Когда я нахожусь внутри сообщения, которое имеет эту категорию, название изменяется на все остальные страницы (которые также вызывается через the_title).

Как я могу изменить название только для публикации заголовков, имеющих эту категорию, независимо от того, на какой странице я нахожусь?

Solutions Collecting From Web of "Изменить название должности, если сообщение имеет определенную категорию"

$post не определено в вашем фильтре. Вам нужно явно вызвать глобальную переменную $post внутри вашей функции фильтрации, чтобы она была доступна. Вы должны помнить, что переменные ( даже глобальные переменные ) вне функции не будут доступны внутри функции, то есть как работает PHP.

Фактически вам не нужно использовать $post global, идентификатор post передается по ссылке как второй параметр в фильтр the_title .

Вы можете использовать следующее:

 add_action( 'the_title', 'adddd', 10, 2 ); function adddd( $title, $post_id ) { if( has_category( 30, $post_id ) ) { $title = 'Prefix ' . $title; } return $title; } 

Если вам нужно настроить таргетинг только на заголовки сообщений в основном запросе / цикле, вы можете обернуть свой contional в дополнительное in_the_loop()

Почему бы не использовать javascript / jquery?

если вы используете <?php post_class(); ?> <?php post_class(); ?> вы можете найти другой класс для каждой категории.

  $('.post.category-one').find('h2.item-title').prepend('Prefix '); 

Используйте .find() для названия селектора

редактировать

С php попробуйте это

 function adddd($title) { global $post; if(has_category('30',$post->ID)) { $title = 'Prefix '.$post->post_title; } return $title; } add_action('the_title','adddd');