Мета-описание – код шаблона для получения описания категории

Ниже приведен код, который я написал для header.php, чтобы описание категории продукта можно было получить и использовать для <meta> описания <meta> при просмотре такой «страницы» на сайте.

Есть ли способ «WordPress» для этого, например, функция, которую я должен использовать вместо ссылки на свойство description объекта, возвращаемого get_queried_obj() ? Я изначально хотел использовать term_description() но добавляет теги <p> поэтому я не закончил этот маршрут (я знаю, что могу разбить их со встроенной функцией, но это не похоже на хорошую практику).

Ниже представлен блок elseif – ключевой фрагмент кода:

 <?php if (is_single() || is_page()) { $description = get_post_meta(get_the_ID(), 'description', true); } elseif (is_tax()) { //Product categories $obj_temp = get_queried_object(); $description = $obj_temp->description; } else { $description = get_bloginfo('description'); } if (trim($description) !== '') { ?> <meta name="description" content="<?php echo htmlspecialchars($description); ?>" /> <?php } ?> 

Solutions Collecting From Web of "Мета-описание – код шаблона для получения описания категории"

Есть ли более «способ WordPress», чтобы сделать это …

Я действительно не знаю, что вы подразумеваете под другим способом WordPress, но в целом способ, которым вы получаете описание термина, является более надежным способом его выполнения. Таким образом, вам не нужно обращаться к $post global, который используется многими людьми. Просто ради интереса, пожалуйста, см. Мой пост здесь, почему следует избегать $post global

Однако я бы запросил объект $GLOBALS['wp_the_query']->get_queried_object() из $GLOBALS['wp_the_query']->get_queried_object() который еще более надежен, чем get_queried_object() , а затем передал это через get_term() чтобы применить фильтры термина к термину

 } elseif ( is_tax() ) { //Product categories $obj_temp = get_term( $GLOBALS['wp_the_query']->get_queried_object() ); $description = $obj_temp->description; } 

Другим вероятным способом является получение термина slug и таксономии из URL-адреса, а затем получение полного объекта термина для получения описания

 } elseif ( is_tax() ) { //Product categories $obj_temp = get_term_by( 'slug', get_query_var('term'), get_query_var('taxonomy') ); $description = $obj_temp->description; } 

EDIT – из комментариев

Как $GLOBALS['wp_the_query']->get_queried_object() более надежный, чем get_queried_object()

Мы на самом деле обсуждали это, что привело к моему ответу на следующий вопрос

  • $ GLOBALS ['wp_the_query'] vs global $ wp_query

Вы действительно должны это прочитать, поскольку я подробно объяснил это. Просто быстрое доказательство концепции, чтобы добавить к этому ответу в этом контексте, в любом шаблоне, предпочтительно в шаблоне страницы или таксономии, выполните следующие действия и посмотрите результаты

 var_dump( $GLOBALS['wp_the_query']->get_queried_object() ); var_dump( get_queried_object() ); query_posts( 's=crap' ); var_dump( $GLOBALS['wp_the_query']->get_queried_object() ); var_dump( get_queried_object() ); 

Кроме того, что является нежелательной ситуацией, которая может возникнуть, если термин фильтры не применяются к термину

Термин данные не продезинфицировать, особенно при использовании непосредственно из супер глобальных, так что он может содержать вредоносный программный код введен или взломан URL на некоторый хардкор порно сайта, который вы не хотите. Применение термина фильтров дезактивирует данные в соответствии с полем термина, чтобы сохранить его в использовании.

Санитарная обработка, проверка и избежать данных должна быть привычкой, а не дискуссионная дополнительно. Хакеры любят не дезинфицированные и не прошедшие проверку данные, они могут внедрять любой вредоносный код на ваш сайт и получать доступ к вашему сайту. Лучший совет, который я когда-либо расскажу вам навсегда, – ВСЕГДА САНИТИЗИРОВАТЬ, ВАЛИДАТЬ И ЭСКАПАТЬ все данные в соответствии с типом данных, независимо от того, откуда он ( даже если он исходит от вас самого ) или для чего он будет использоваться. Таким образом, вы крайне затрудняетесь взломать ваш сайт хакерами