Использование заголовка поста в массиве

Вопрос или проблема

Я хочу использовать функцию 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);
?>

Объяснение изменений

  1. Использование get_the_title(): Эта функция возвращает заголовок текущего поста, что позволяет сохранять его в переменной $title для последующего использования. Ваша первоначальная реализация функции the_title() не подходила, так как она выводит заголовок сразу же, что мешает его сохранению в переменной.

  2. Создание массива $args: В массиве $args вы добавили новый элемент tax_query, который более подходит для поиска постов по значениям таксономий. Это позволяет более эффективно фильтровать посты по заданной таксономии, а также избегает ошибок, связанных с неправильной структурой массива.

  3. Фильтрация по таксономии: В вашем коде добавлен элемент taxonomy, где вы можете указать вашу таксономию, например, ‘content’, и фильтровать по терминологиям, что предотвращает потенциальные конфликты с другими типами контента.

Заключение

С помощью указанных выше изменений ваш код станет функциональным и позволит корректно извлекать посты из типа ‘questions’, основываясь на заголовке текущего поста. Используйте предложенные рекомендации для более точного и эффективного кода. Если у вас есть дополнительные вопросы, не стесняйтесь обращаться!

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

Капча загружается...