#php #wordpress #categories #advanced-custom-fields #wysiwyg
#php #wordpress #Категории #дополнительно-пользовательские-поля #wysiwyg
Вопрос:
Я использую поле редактора ACF Wysiwyg, чтобы иметь возможность написать дополнительный текст для страниц моей категории. Я повторяю текст, используя category.php
Сначала я думал, что могу просто повторить get_field, но обнаружил, что мне нужно передать категорию. Поэтому я использовал get_the_category(). Но по какой-то причине код работает только для дочерних категорий:
example.com/category/parent/child / <- работает example.com/category/parent / <- не работает
Я также пробовал с помощью wp_get_post_categories(); но безуспешно. Чего мне не хватает??
<?php
$category = get_the_category();
$extra_text = get_field('ekstra_tekstfelt', $category[0] );
?>
<p> <?php echo $extra_text ?></p>
Я попробовал print_r ($ category), где дочерняя и родительская категории дали мне массив:
Дочерняя категория
Array ( [0] => WP_Term Object ( [term_id] => 27 [name] => Tilbehør [slug] => tilbehor [term_group] => 0 [term_taxonomy_id] => 27 [taxonomy] => category [description] => [parent] => 1 [count] => 31 [filter] => raw [cat_ID] => 27 [category_count] => 31 [category_description] => [cat_name] => Tilbehør [category_nicename] => tilbehor [category_parent] => 1 ) )
Родительская категория
Array ( [0] => WP_Term Object ( [term_id] => 46 [name] => Bagværk [slug] => bagvaerk [term_group] => 0 [term_taxonomy_id] => 46 [taxonomy] => category [description] => [parent] => 1 [count] => 16 [filter] => raw [cat_ID] => 46 [category_count] => 16 [category_description] => [cat_name] => Bagværk [category_nicename] => bagvaerk [category_parent] => 1 ) [1] => WP_Term Object ( [term_id] => 16 [name] => Dessert [slug] => dessert [term_group] => 0 [term_taxonomy_id] => 16 [taxonomy] => category [description] => [parent] => 1 [count] => 22 [filter] => raw [cat_ID] => 16 [category_count] => 22 [category_description] => [cat_name] => Dessert [category_nicename] => dessert [category_parent] => 1 ) )
Комментарии:
1. Первое, на что следует обратить внимание, это то, что вы должны использовать
get_field()
вместоthe_field()
здесь, посколькуthe_field()
на самом деле повторяется сразу, поэтому он не используется, когда вы пытаетесь сохранить переменную. также —get_the_category
отсутствует его()
и обычно используется для объектов post — вы могли бы попробовать использоватьget_queried_object()
, чтобы попытаться получить объект категории.2. также — вы уверены, что поле родительского cat заполнено? и использует ли он тот же файл cat? или он использует archive.php ?
3. Спасибо тебе, Стендер. Мои извинения. Я использовал get_field и get_the_category();… get_queried_object сломал сайт и выдал мне ошибку. Я только что попробовал с простым echo на category.php и это вышло как на родительской, так и на дочерней кошке. Да, поле родительского кота заполнено.
4. Выяснил, почему get_queried_object(); ломал сайт… Поскольку я использовал $category[0] — Deleted [0], и это дало мне тот же результат: работает для дочерней категории, но не для родительской.
Ответ №1:
Просматривая ваш код, кажется, все в порядке, но нужно проверить, получаем ли мы значения для каждой переменной или нет, являются ли поля acf пустыми или нет?
Ниже приведен пример с официального сайта ACF. В своем коде вы можете убедиться, что получаете правильный объект второго передаваемого вами аргумента.
// get the current taxonomy term
$term = get_queried_object(); // or other way where you get the category term object
// example
$image = get_field('image', $term);
$color = get_field('color', $term);
echo $color;
echo $image;
Комментарии:
1. Спасибо! Я пробовал с помощью get_queried_object(); но результат тот же… Работает для дочерней категории, но не родительской :/
2. Попробуйте распечатать объект. получаете ли вы объект с правильными данными?
3. В вашем коде попробуйте напечатать
$category
для дочерней категории и родительской категории4. оба дают мне массив… Я обновил вопрос 🙂
5. Я бы попросил попробовать вот так
$taxonomy . '_' . $term_id
. Напримерcategory_123
, вместо передачи термина object