Get categories


Здравствуйте, форумчане!
Я в вордпрессе не силён, но что-то пытаюсь сделать сам.
У меня такая проблемка:

У меня есть три страницы "Одежда#1", "Одежда#2", "Одежда#3"
Есть три категории с такими же именами(родители "Одежда#1", "Одежда#2", "Одежда#3") и у каждого есть подкатегории(дочерние).

Мне необходимо вывести подкатегории для каждой своей страницы. Т.е. для страницы "Одежда#1" хочу вывести все подкатегории(дочерние рубрики )родителя "Одежда!"

Что у меня получилось(код ниже): Открывая любую страницу ("Одежда#1", "Одежда#2", "Одежда#3") я получаю только один список подкатегории (в моём случае ‘parent’ => ‘5’,). При смене на другие цифры родителя (4, 5) я получаю другие подкатегории.

Вот как мне сделать, чтобы при нажатии на страницу "Одежда#1" открывалась подкатегории именно для этой страницы и для каждой свои категории.


вот код, который я использую:
Заранее огромное спасибо!

Добавлено через 23 часа 22 минуты
Итак, прошло пару дней, никто не помог….

Но, я сумел помочь себе сам и, возможно помогу другим, если у кого такая же проблема.

Ну, приступим:

1) Т.к. мне нужно вывести 3 (родительские)категории : Товар 1 , Товар 2, Товар 3. Я создал 3 страницы с разными шаблонами (page1.php, page2.php, page3.php).

Естественно внутри каждоого я прописал комментарии…

2) Т.к. в каждой странице нужно выводить одинаково, но только с родительских категорий, пишем этот код:

Вот некоторые параметры:

hide_empty — значение 0 (показывать пустые категории);
exclude — значение 1 (не показывать категорию с id 1);
parent — значение 0 (вывод только основных родительских рубрик);
orderby — сортировка по id.

Вроде всё, надеюсь я не зря обратно сюда вернулся ,и моя запись обязательно кому-то поможет!

Добавлено через 4 минуты
а, ещё обычно в echo ‘ ‘; выводятся название статьи и контент, вот пример:

www.cyberforum.ru

Чтобы полностью понять разницу между get_categories()


, get_category() и get_term_by() , вам нужно посмотреть, как эти функции создаются.

get_categories($args) как следует из названия, получить список всех категорий, созданных на сайте. Эта функция может быть найдена в строках «wp-includes / category.php» с 39 по 66

 39 function get_categories( $args = '' ) { 40 $defaults = array( 'taxonomy' => 'category' ); 41 $args = wp_parse_args( $args, $defaults ); 42 43 $taxonomy = $args['taxonomy']; 44 /** 45 * Filter the taxonomy used to retrieve terms when calling get_categories().  

* 47 * @since 2.7.0 48 * 49 * @param string $taxonomy Taxonomy to retrieve terms from. 50 * @param array $args An array of arguments. @see get_terms() 51 */ 52 $taxonomy = apply_filters( 'get_categories_taxonomy', $taxonomy, $args ); 53 54 // Back compat 55 if ( isset($args['type']) && 'link' == $args['type'] ) { 56 _deprecated_argument( __FUNCTION__, '3.0', '' ); 57 $taxonomy = $args['taxonomy'] = 'link_category'; 58 } 59 60 $categories = (array) get_terms( $taxonomy, $args ); 61 62 foreach ( array_keys( $categories ) as $k ) 63 _make_cat_compat( $categories[$k] ); 64 65 return $categories; 66 }

Как видно из строки 40, категория используется в качестве таксономии по умолчанию, поэтому только категории будут возвращены в списке категорий

get_category( $category, $output, $filter )


извлекает только данные категории для определенной конкретной категории. Эта функция может быть найдена в линиях «wp-includes / category.php» от 90 до 99

 90 function get_category( $category, $output = OBJECT, $filter = 'raw' ) { 91 $category = get_term( $category, 'category', $output, $filter ); 92 93 if ( is_wp_error( $category ) ) 94 return $category; 95 96 _make_cat_compat( $category ); 97 98 return $category; 99 } 

Из строки 91 вы можете видеть, что get_category()


использует только категорию как термин, поэтому возвращается только категория, без условий.

get_term_by( $field, $value, $taxonomy, $output, $filter ) получит все данные о get_term_by( $field, $value, $taxonomy, $output, $filter ) по полям и данным по get_term_by( $field, $value, $taxonomy, $output, $filter ) . Эта функция может быть найдена «wp-includes / taxonomy.php» в строках 1028-1076

 1028 function get_term_by($field, $value.  

== $field ) { 1044 $value = (int) $value; 1045 $field = 'tt.term_taxonomy_id'; 1046 } else { 1047 $term = get_term( (int) $value, $taxonomy, $output, $filter); 1048 if ( is_wp_error( $term ) ) 1049 $term = false; 1050 return $term; 1051 } 1052 1053 $term = $wpdb->get_row( $wpdb->prepare( "SELECT t.*, tt.* FROM $wpdb->terms AS t INNER JOIN $wpdb->term_taxonomy AS tt ON t.term_id = tt.term_id WHERE tt.taxonomy = %s AND $field = %s LIMIT 1", $taxonomy, $value) ); 1054 if ( !$term ) 1055 return false; 1056 1057 wp_cache_add($term->term_id, $term, $taxonomy); 1058 1059 /** This filter is documented in wp-includes/taxonomy.php */ 1060 $term = apply_filters( 'get_term', $term, $taxonomy ); 1061 1062 /** This filter is documented in wp-includes/taxonomy.php */ 1063 $term = apply_filters( "get_$taxonomy", $term, $taxonomy ); 1064 1065 $term = sanitize_term($term, $taxonomy, $filter); 1066 1067 if ( $output == OBJECT ) { 1068 return $term; 1069 } elseif ( $output == ARRAY_A ) { 1070 return get_object_vars($term); 1071 } elseif ( $output == ARRAY_N ) { 1072 return array_values(get_object_vars($term)); 1073 } else { 1074 return $term; 1075 } 1076 }

В строке 1047 вы можете видеть, что таксономия может быть указана пользователем и не кодируется, чем две другие ранее упомянутые функции

Для вашей собственной выгоды вы должны вникнуть в ссылки, которые я предоставил. Поможет вам много, если вы это сделаете.

www.wordpressask.com

Функция get_the_category


Синтаксис функции get_the_category достаточно прост:

где параметр id это учетная запись поста для которого будут выводить категории. Куда более интересными есть примеры использования функции.

Отображение первой категории для поста

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

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

Для этого в качестве параметра функции нужно передавать id поста, что и происходит в коде.

Вывод названия категории без ссылок

Кстати, данную функцию я использую в некоторых сайтах, чтобы выводить название категории поста, но без активной ссылки — так просто дополнительный полезный текст на странице. В таком случае можно применить код:


Убираем из title категории лишний текст

Ну, и напоследок, немного поразмыслив получился хак для вывода списка категории для поста без использования функции the_category, которую мы успешно заменяем на get_the_category. Если вы хотите добавить код непосредственно в то место шаблона, где выводятся категории, например, файл archive.php, то пишем что-то вроде:

Можно, в принципе разместить код для отображения категорий в файле функций, а потом в файлах шаблона поменять the_category на новую функцию, например, под названием my_thecat(). Конечно, не забудьте предварительно перед заменой добавить соответствующий код в файл функций functions.php:

Потестировал, все работает. Остается лишь один вопрос — насколько это все полезно и крайне необходимо. Если у вас один блог с постоянным дизайном, который вы хотите сделать самым лучшим, то можно потратить пару минут и внести соответствующие изменения. В случае если у вас таких блогов много, думаю, особой seo выгоды манипуляция с title не принесет в плане, проще купить ссылок в Rotapost на все эти проекты — кстати эксперимент по подъему тИЦ в системе успешно и позитивно завершен, скоро будет отчет об этом.

Вывод категорий кастомных записей

В комментариях подсказывают, что примеры, указанные выше, не работают для кастомных (пользовательских) типов записей. Я с этой задачей не сталкивался, поэтому могу вам лишь посоветовать погуглить решение в англоязычных блогах по ключу wordpress custom post type show category или же воспользоваться подсказкой пользователя Stinker (из комментариев). В месте вывода категорий нужно просто вставить код:


Где categoria_video — это таксономия пользовательской записи (она же кастомная). А теперь более подробно от куда и что. Например у нас есть:

Спасибо пользователю Stinker за подсказку, возможно, вам она пригодится.
P.S. Постовой. В одном из блогов рунета была найдена замечательная подборка темwordpress портфолио из 17-ти бесплатных качественных шаблонов.

wordpressinside.ru

wp_list_catergories()

wp_list_categories() creates and returns a formatted HTML code to display category lists. This function allows us to work on the formatted results by using custom walker class. This class extends Walker_Category to parse the category results.

The way of using this function is,

<?php    $args = array(  	'style' => 'list',  	'hide_empty' => 1,  	);   wp_list_categories($args);   ?>  <?php   	wp_list_categories(style=list&hide_empty=1);   ?>  

get_categories()

This WordPress function returns categories in an object array. From this array, we can retrieve categories to create our own format. And the code is,

<?php    $args = array(  	'style' => 'list',  	'hide_empty' => 1,  	);   get_categories($args);   ?>  <?php   	get_categories(style=list&hide_empty=1);   ?>  

wp_dropdown_categories()

This function returns WordPress categories as a dropdown list. And the way to use this function is,

<?php    $args = array(  	'style' => 'list',  	'hide_empty' => 1,  	);   wp_dropdown_categories( $args );   ?>  

wp_terms_checklist()

Similarly, this function returns category checkbox. wp_terms_checklist() function accepts 6 optional parameters. The code is,

<?php    wp_terms_checklist($postid,$decendent_and_self,$selected_categories,$popular_categories,$walker,$checked_ontop);   ?>  

and the parameters are,

  • $postid – To check specified post categories.
  • $decendent_and_self – To return specified category checkbox with its dependent Category checkboxes.
  • $selected_categories – To check specified array of categories.
  • $popular_categories – To override popular categories.
  • $walker – To work with the resultant HTML.
  • $checked_ontop – To move checked boxes to the top of the category tree.

This WordPress code tutorial was published on February 2, 2016.

↑ Back to Top

phppot.com


You May Also Like

About the Author: admind

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.