подсказки

Пользовательские удобные архивы таксономии

Пользовательские удобные архивы таксономии

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

В этом руководстве предполагается, что все архивы категорий, тегов и таксономий отображаются в одном файле archive.php, а не в отдельных файлах для category.php, tag.php и  т.д.

В большинстве случаев разработчики тем размещают в верхней части файла archive.php  что-то вроде этого:

<h2><?php echo single_cat_title(); ?></h2> <div class="category-description"><?php echo category_description(); ?></div>

Или это:

<h2><?php echo single_tag_title(); ?></h2> <div class="tag-description"><?php echo tag_description(); ?></div>

Или комбинация:

<?php if( is_category()) { ?> <h2><?php echo single_cat_title(); ?></h2> <div class="category-description"><?php echo category_description(); ?></div> <?php } elseif( is_tag()) { ?> <h2><?php echo single_tag_title(); ?></h2> <div class="tag-description"><?php echo tag_description(); ?></div> <?php } ?>

Все эти функции идеально подходят для использования, за исключением того, что они не работают с пользовательскими таксономиями и фактически приводят к возникновению ошибки (если не использовать условное выражение is_category / is_tag).

Если мы посмотрим на исходный код функции tag_description(), мы увидим, что на самом деле это просто ссылка на аналогичную функцию term_description (), но с параметром «post-tag», установленным по умолчанию.

/** * Retrieve tag description. * * @since 2.8 * * @param int $tag Optional. Tag ID. Will use global tag ID by default. * @return string Tag description, available. */ function tag_description( $tag = 0) { return term_description( $tag ); }

Функция term_description () действительно хороша, потому что (если мы посмотрим на источник ), мы увидим, что она фактически обнаружит текущий тип таксономии, который отображается, и отобразит описание термина из правильной таксономии, вместо того, чтобы выдавать ошибку как tag_description (). См. Функцию ниже:

/** * Retrieve term description. * * @since 2.8 * * @param int $term Optional. Term ID. Will use global term ID by default. * @param string $taxonomy Optional taxonomy name. Defaults to 'post_tag'. * @return string Term description, available. */ function term_description( $term = 0, $taxonomy = 'post_tag') { if (!$term && (is_tax() || is_tag() || is_category()) ) { $term = get_queried_object(); $taxonomy = $term->taxonomy; $term = $term->term_id; } $description = get_term_field( 'description', $term, $taxonomy ); return is_wp_error( $description )? '': $description; }

Также есть отличная функция для заголовка термина таксономии, которая работает таким же образом: single_term_title ()

Все это означает, что мы можем просто использовать следующий файл в нашем archive.php, и он будет работать для всех таксономий:

<h2><?php echo single_term_title(); ?></h2> <div class="tax-description"><?php echo term_description(); ?></div>

Это намного лучше, чем создание нескольких файлов для работы с различными таксономиями (если вы не создаете индивидуальные макеты для каждой), а также намного безопаснее.

Источник записи: https://www.wpexplorer.com

Похожие сообщения
подсказки

6 веских причин, по которым WordPress - лучшая платформа для вашего сайта

подсказки

Основы маркетинга в социальных сетях для вашего сайта WordPress

подсказки

Лучшие практики UX для WordPress и вашего онлайн-бизнеса

подсказки

Полное руководство по пингбэкам и трекбэкам WordPress