Как получить метаданные из пользовательского названия категории

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

Я хочу получить метаданные по имени категории пользовательского типа записи.

Сейчас я получаю все метаданные, но хочу получить специальные для каждой категории.

$partSql = $wpdb->get_results("SELECT * FROM ".$wpdb->prefix."postmeta WHERE meta_key = 'prd_part_no'", ARRAY_A);

Вы можете использовать функцию get_post_meta в WordPress, чтобы это осуществить. Вот ссылка get_post_meta на нее в документации WordPress.

Ответ или решение

Чтобы извлечь метаданные для конкретной категории кастомного типа постов в WordPress, вы можете использовать комбинацию методов get_posts или WP_Query вместе с get_post_meta. Это позволит вам фильтровать посты по категории и затем получить метаданные для этих постов.

Вот подробный пример, как это можно сделать:

Шаг 1: Получите ID категории

Сначала вам нужно получить ID категории, для которой вы хотите получить метаданные. Вы можете сделать это с помощью функции get_category_by_slug или get_term_by, если вы используете категории, которые не являются стандартными.

Шаг 2: Используйте WP_Query для получения постов в определенной категории

// Укажите название или слаг категории
$category_slug = 'your-custom-category';

// Получите объект категории
$category = get_category_by_slug($category_slug);

// Если категория существует
if ($category) {
    // Создайте новый экземпляр WP_Query
    $args = array(
        'post_type' => 'your_custom_post_type', // Укажите тип вашего кастомного поста
        'posts_per_page' => -1, // Получить все посты
        'tax_query' => array(
            array(
                'taxonomy' => 'category', // Укажите нужную таксономию
                'field' => 'term_id',
                'terms' => $category->term_id,
            ),
        ),
    );

    // Выполните запрос
    $query = new WP_Query($args);

    // Переберите посты
    if ($query->have_posts()) {
        while ($query->have_posts()) {
            $query->the_post();

            // Получите метаданные для текущего поста
            $meta_value = get_post_meta(get_the_ID(), 'prd_part_no', true);

            // Выводим метаданные
            echo 'Meta Value for ' . get_the_title() . ': ' . $meta_value . '<br>';
        }
        // Сброс глобального поста
        wp_reset_postdata();
    } else {
        echo 'Нет постов в данной категории.';
    }
} else {
    echo 'Категория не найдена.';
}

Описание кода:

  1. Получение категории: Мы получаем объект категории с использованием слага.
  2. Настройка WP_Query: Подготовка аргументов для WP_Query, чтобы фильтровать по указанной категории.
  3. Цикл по постам: Мы перебираем все посты, которые соответствуют условиям запроса.
  4. Получение метаданных: Используем get_post_meta, чтобы получить значения метаданных для каждого поста.
  5. Вывод результата: Выводим заголовок и метаданные для каждого поста.

Этот подход позволяет получить и отобразить метаданные для кастомных постов в зависимости от заданной категории.

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

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