Как перечислить все категории и теги на странице?

Предположим, у нас есть несколько категорий, тегов и пользовательских типов сообщений и таксономии. Как мы можем перечислить все категории, теги на странице? Что-то вроде;

страница

Категория Миниатюра и Категория Название 1 (ссылка на рейтинге страницы) Описание

Категория Миниатюра и категория Имя 2 (ссылка на рейтинге страницы) Описание

Категория Миниатюра и категория Название 3 (ссылка на рейтинге страницы) Описание

делитель

Значок эскизов и тегов 1 (ссылка на страницу тегов) Описание

Значок тегов и имя тега 2 (ссылка на страницу тегов) Описание

Значок эскизов и тегов 3 (ссылка на страницу тегов) Описание

То же самое с пользовательскими типами и таксономиями.

И если описание и эскиз невозможны, будет достаточно только имя со ссылкой.

Этими плагинами являются большинство из них.

Прямо сейчас я ищу код плагина для достижения того, чего хочу.

ТЕРМИЧЕСКИЕ МЕТАДЫ

Можно получить эскизы для терминов, используя новые метаданные терминов в 4.4. Вам также просто нужно заранее определить их заранее.

  • add_term_meta( int $term_id, string $meta_key, mixed $meta_value, bool $unique = false )
  • get_term_meta( int $term_id, string $key = '', bool $single = false )
  • update_term_meta( int $term_id, string $meta_key, mixed $meta_value, mixed $prev_value = '' )

КАТЕГОРИИ

get_categories () Возвращает массив объектов категории, соответствующих параметрам запроса.

 echo "Categories:<br/>"; $args = array( 'orderby' => 'name', 'order' => 'ASC', 'public' => true, ); $categories = get_categories( $args ); foreach ( $categories as $category ) { echo '<a href="' . get_category_link( $category ) . '">' . $category->name . '</a><br/>'; } 

 echo "<hr>"; // divider 

TAGS

get_tags () Извлекает массив объектов для каждого термина в таксономии post_tag.

 echo "Tags:<br/>"; $args = array( 'orderby' => 'name', 'order' => 'ASC', 'public' => true, ); $tags = get_tags( $args ); foreach ( $tags as $tag ) { echo '<a href="' . get_tag_link( $tag ) . '">' . $tag->name . '</a><br/>'; } 

Taxonomies

get_taxonomies () Получить список зарегистрированных объектов таксономии.

 echo "Taxonomies:<br/>"; $args = array( '_builtin' => false, 'public' => true, ); $taxonomies = get_taxonomies( $args, 'objects' ); foreach ( $taxonomies as $taxonomy ) { echo '<p>' . $taxonomy->labels->name . '</p>'; } 

ПОЧТОВЫЕ ТИПЫ

get_post_types () Возвращает зарегистрированные типы сообщений, найденные в $ wp_post_types. get_posts () создает массив сообщений на основе набора параметров, поэтому используйте его с вашим post_type_list.

 echo "Post Types:<br/>"; $args = array( 'public' => true, '_builtin' => false, ); $output = 'names'; // names or objects, note names is the default $operator = 'and'; // 'and' or 'or' $post_types = get_post_types($args, $output, $operator); // get all the posts for all post_types $posts = get_posts(array( 'post_type' => $post_types, 'numberposts' => - 1, 'orderby' => 'post_type', 'order' => 'ASC', 'post_status' => array( 'publish' ), 'public' => true, )); foreach($posts as $post) { $link = get_permalink($post); $title = $post->post_title; if($post_type !== $post->post_type) { $post_type = $post->post_type; echo '</br/><p>' . $post_type . '</p></br/>'; } // show link to post echo "<p><a href=\"$link\">$title</a></p>"; } 

ПЕРЕХОДНОЕ КУЧЕНИЕ

Если вы хотите кэшировать результаты всех этих запросов, рассмотрите API Transients . Это сохранит результат в базе данных в течение ограниченного времени (которое вы запросите ~). Это не определенный таймфрейм, потому что плагины, такие как WP Optimize, могут очищать кеш в любое время.

 // check if the value exists using the key -- if it fails then we'll generate the content if(false === ($trans_value = get_transient($trans_key = 'my_transient_key'))) { print_r('NO CACHE FOR ' . $trans_key); // (debug output) // start the output buffer to capture our generated content ob_start(); // run your expensive operations -- data sent to the screen will be captured print_r('This is an expensive operation!'); // using ob_get_clean we'll store the results and set the value variable. // double check the amount of time you want to keep the data cached // set to 0 for auto loading on every page hit. set_transient($trans_key, $trans_value = ob_get_clean(), 1 * MINUTE_IN_SECONDS); } else { print_r('THIS IS A CACHED RESULT FOR ' . $trans_key); // (debug output) } // value is ready and cached print_r("<pre>$trans_value</pre>"); 

Чтобы очистить значение, просто удалите его с помощью ключа.

 delete_transient ( $trans_key );