Вопрос или проблема
Я хочу использовать функцию the_title()
, чтобы получить заголовок поста, а затем ссылаться на этот заголовок в массиве. Код выглядит следующим образом:
<?php
$title = array(
the_title()
);
$args = array(
'post_type' => array( 'questions' ), 'content' => array( $title )
);
Так что я хочу взять заголовок поста и использовать переменную $args
, чтобы найти посты, у которых тип поста=”questions” и у которых заголовок текущего поста является их значением для таксономии ‘content’.
В настоящее время это не работает. Пост, на котором я тестирую, имеет заголовок ‘Book1’, и это работает, когда я изменяю строку $args
на:
$args = array(
'post_type' => array( 'questions' ), 'content' => array( 'Book1' )
Но с кодом, который я указал сначала, это не работает…
ИЗМЕНИТЬ: да, это было просто: нужно было просто изменить на ‘content’ => $title, потому что $title уже является массивом. Спасибо всем!
Вы можете использовать get_the_title(), чтобы сохранить заголовок в переменной.. the_title() на самом деле напечатает заголовок ..
Ответ в конце был простым:
<?php
$title = array(
the_title()
);
$args = array(
'post_type' => array( 'questions' ), 'content' => $title
);
Так что мне просто нужно было изменить ‘content’ => array( $title) на просто ‘content’ => $title. Это потому что $title уже является массивом!
Спасибо всем за помощь.
Ответ или решение
Конечно! Давайте разберем ваш код и выясним, как правильно использовать функцию the_title()
для получения заголовка поста в массиве, а также как правильно настроить аргументы для запроса.
Проблема
Вы пытаетесь использовать функцию the_title()
, чтобы получить заголовок текущего поста и затем использовать его в массиве для аргументов WP_Query. Однако, текущая реализация свидетельствует о том, что the_title()
выводит заголовок на экран, а не возвращает его как значение.
Решение
Для того, чтобы использовать заголовок поста программно, вместо the_title()
, вам следует использовать функцию get_the_title()
, которая вернет название поста в виде строки без его вывода.
Корректный код
Правильный код для использования заголовка в массиве будет выглядеть следующим образом:
<?php
$title = get_the_title(); // Получаем заголовок поста как строку
$args = array(
'post_type' => array('questions'), // Указываем тип поста
'tax_query' => array( // Используем tax_query для фильтрации по таксономии
array(
'taxonomy' => 'content', // Наименование вашей таксономии
'field' => 'name', // Указываем, что будем искать по имени
'terms' => $title, // Передаем заголовок поста
),
),
);
// Теперь вы можете использовать $args с WP_Query или другой функцией для получения постов
$query = new WP_Query($args);
?>
Объяснение изменений
-
Использование
get_the_title()
: Эта функция возвращает заголовок текущего поста, что позволяет сохранять его в переменной$title
для последующего использования. Ваша первоначальная реализация функцииthe_title()
не подходила, так как она выводит заголовок сразу же, что мешает его сохранению в переменной. -
Создание массива
$args
: В массиве$args
вы добавили новый элементtax_query
, который более подходит для поиска постов по значениям таксономий. Это позволяет более эффективно фильтровать посты по заданной таксономии, а также избегает ошибок, связанных с неправильной структурой массива. -
Фильтрация по таксономии: В вашем коде добавлен элемент
taxonomy
, где вы можете указать вашу таксономию, например, ‘content’, и фильтровать по терминологиям, что предотвращает потенциальные конфликты с другими типами контента.
Заключение
С помощью указанных выше изменений ваш код станет функциональным и позволит корректно извлекать посты из типа ‘questions’, основываясь на заголовке текущего поста. Используйте предложенные рекомендации для более точного и эффективного кода. Если у вас есть дополнительные вопросы, не стесняйтесь обращаться!