Intereting Posts
Переписать URL-адрес WordPress Сохранение пользовательских параметров виджетов панели инструментов в wordpress Отображать сообщения только с определенным тегом Как добавить элемент после миниатюры Ограничить роль автора только 3 страницами wp-admin Отображение содержимого настраиваемого поля страницы на их дочернем элементе Автоматическое преобразование стандартных сообщений с настраиваемыми полями в настраиваемые типы сообщений Редактор HTML html отличается от источника просмотра Как заставить WooCommerce воссоздать домашнюю страницу? Проблемы с WordPress Ajax Запрос сообщений с мета-ключом и метазначением, не возвращающим ничего Уведомлять администратора при редактировании страницы? Как получить текущий номер сообщения, отфильтрованный по типу сообщения и текущей категории? В шаблоне страницы отсутствуют поля или неверно, когда я обновляю шаблон Показать / скрыть виджеты в администраторе WordPress на основе текущей опции Advanced Custom Fields

Изменить функцию класса Post

Я хочу изменить / удалить части функции автоматического post-класса, встроенные в wordpress, скажем, когда я создаю сообщение, генерируемый html-код выглядит следующим образом:

<div id="post-106" class="contentmain fullwidth post-106 post type-post status-publish format-standard has-post-thumbnail hentry category-test category-test2 category-test3 category-test4 tag-testingtags1 tag-testingtags2 tag-testingtags3"> 

Я хочу удалить теги из этого автоматически сгенерированного кода (tag-testingtags1,2,3), я не могу найти, какая функция в wordpress генерирует код, кто-нибудь хочет указать мне в правильном направлении? Если это основной файл, есть простой способ исключить теги из вставки в код, используя какой-то фильтр-крючок в functions.php, поэтому мне не нужно изменять файлы wp core?

post_class() – обертка вокруг get_post_class() .

Попробуйте post_class следующий post_class который запускается из get_post_class() внутри wp-includes/post-template.php :

 add_filter('post_class', 'filter_post_class', 10, 3); function filter_post_class($classes, $class, $post_id) { $temp = implode(' ', $classes); $temp = preg_replace('/\s\btag\-\w*\b/i', '', $temp); return explode(' ', $temp); } 

Альтернативно ( РЕКОМЕНДУЕМОЕ ):

 add_filter('post_class', 'filter_post_class', 10, 3); function filter_post_class($classes, $class, $post_id) { $classes = array_filter($classes, function($class_name){ // use !== 0 to ensure we match tag- at begining of string return strpos($class_name, 'tag-') !== 0; }); return $classes; } 

Другой альтернативный метод, хотя потенциально с риском, заключается в следующем:

 add_filter('get_the_tags', 'filter_get_the_tags'); function filter_get_the_tags() { return array(); } 

Хотя при таком подходе в обратном вызове следует учитывать некоторую условную логику.

Я говорю, что для последнего, потому что единственная другая функция (в терминах основного WP), которая вызывает get_the_tags() является wp-includes/feed.php и в частности get_the_category_rss() .

Вы можете использовать фильтр post_class для изменения вывода классов post:

 add_filter( 'post_class', 'cyb_post_class' ); function cyb_post_class( $classes ) { // Modify the array $classes as you wish // For example: remove tag-testingtags1 class unset( $classes['tag-testingtags1'] ); return $classes; } 

Классы с именами, начинающимися с tag- , генерируются из тегов, связанных с почтой (таксономия tag- ). Если вы хотите автоматически удалить эти классы:

 add_filter( 'post_class', 'cyb_post_class', 10, 3 ); function cyb_post_class( $classes, $class, $post_id ) { // Get all the tags associated with the post $tags = get_the_tags( $post_id ); if( ! is_wp_error( $tags ) ) { foreach( $tags as $tag ) { if( isset( $classes['tag-' . $tag->slug] ) ) { unset( $classes['tag-' . $tag->slug] ); } } } return $classes; }