#php #wordpress #filter
#php #wordpress #Фильтр
Вопрос:
У меня есть php-код, как показано ниже:
$category = get_the_category();
// Строка #A
echo '<pre>'; print_r($category); echo '</pre>';
// Строка #B добавлена для целей отладки
Код в строке #A извлекает категории сообщений.
Код во 2-й строке, который я добавил с целью отладки, возвращает следующий массив;
Array
(
[0] => WP_Term Object
(
[term_id] => 13085
[name] => Cannabis
[slug] => democracy_project_cannabis
[term_group] => 0
[term_taxonomy_id] => 13085
[taxonomy] => category
[description] => Hello World
[parent] => 13083
[count] => 8
[filter] => raw
[cat_ID] => 13085
[category_count] => 8
[category_description] => Good Morning
[cat_name] => Cannabis
[category_nicename] => democracy_project_cannabis
[category_parent] => 13083
)
[1] => WP_Term Object
(
[term_id] => 13093
[name] => Today
[slug] => today
[term_group] => 0
[term_taxonomy_id] => 13093
[taxonomy] => category
[description] =>
[parent] => 0
[count] => 3
[filter] => raw
[cat_ID] => 13093
[category_count] => 3
[category_description] =>
[cat_name] => Today
[category_nicename] => today
[category_parent] => 0
)
)
Формулировка проблемы:
Мне интересно, какой php-код мне нужно добавить после строки #A, чтобы он принимал только category [name] => Today.
Код в строке #A возвращает список категорий для конкретного поста. Я просто хочу взять только одну категорию.
Я думаю, мне нужно использовать метод array_filter (), но я не уверен, как я могу его использовать.
Комментарии:
1. Вы можете сделать это
$category[1]["name"];
2. Где? После строки #A?
3. Да, после
$category = get_the_category();
Ответ №1:
Я думаю, вам лучше для начала получать нужные сообщения на основе определенной категории, а не фильтровать все подряд.
$term = get_term_by('name', 'Today', 'category');
if ($term) {
$category = get_the_category($term->term_id);
} else {
echo "Category not found";
}
Комментарии:
1. Пытаюсь. Следите за обновлениями.
Ответ №2:
Вы можете перебирать возвращаемый $category
массив:
foreach($category as $cat) {
if ($cat->name == 'Today') {
//do your stuff
}
}
Комментарии:
1. Как мы можем жестко запрограммировать, чтобы это занимало всего
category [name] => Today.
? Давайте забудем о цикле foreach.2. Вероятно, это то, что вы ищете.
get_term_by( 'name', 'Today')
возвращает запрошенный объект term и затем может быть использован для дальнейшей обработки.