Wordpress - Получить пользовательский тип сообщения, связанный с пользовательской таксономии - PullRequest
0 голосов
/ 13 февраля 2011

Согласно Кодексу WordPress, функция get_post_types() имеет параметр таксономии, но нет точного объяснения того, как именно она работает.

$post_args = array(
            'public'   => true,
            'taxonomies' => 'genre',
            'show_ui' => true
            ); 

$post_types = get_post_types($post_args);

Приведенный выше код ничего не возвращает, хотя жанр - это таксономия, которая зарегистрирована в типе записи «книга».

Если у меня есть пользовательский тип записи 'books' с некоторыми пользовательскими таксономиями, такими как 'author' и 'genre' ... Я хотел бы использовать get_post_type(), чтобы вернуть тип записи, связанный с 'genre' ... очевидно, "книги". Я пытаюсь сделать что-то, что поможет установить параметр post_type в get_posts() .., так как он ищет сообщения только по умолчанию, а не пользовательские типы сообщений. Очевидно, что я мог бы просто установить параметр post_type, но я хочу сделать его совместимым с любыми будущими типами записей, которые я мог бы использовать в своих различных темах.

Ответы [ 2 ]

7 голосов
/ 05 апреля 2014

Хотя я немного опоздал на вечеринку по этому поводу:

taxonomies не является допустимым аргументом для get_post_types(), поэтому в лучшем случае он просто игнорирует аргумент и возвращает список всех зарегистрированных типов записей.

Вероятно, ваша лучшая ставка - объект get_taxonomy():

$currentTaxonomy = get_query_var('taxonomy');

//  Or: $currentTaxonomy = 'genre';

if ($currentTaxonomy) {
    $taxObject = get_taxonomy($currentTaxonomy);
    $postTypeArray = $taxObject->object_type;
}

Это даст вам массив всех типов записей, на которые зарегистрирована таксономия.

0 голосов
/ 13 февраля 2011

Возможно, вы захотите использовать комбинацию обоих: get_posts () и затем передать ваш post_type. Нечто подобное может помочь вам начать.

$post_types = get_post_types();
    if ( is_category() || is_tag()) {

        $post_type = get_query_var('article');

        if ( $post_type )
            $post_type = $post_type;
        else
            $post_type = $post_types;

        $query->set('post_type', $post_type);

    return $query;
    }
}

Вы НЕ хотели бы использовать is_category и is_tag, вы бы использовали что-то вроде is_in_taxonomy (). Что именно ты пытаешься сделать? Я думаю, что вы пытаетесь сделать то же самое, что и я, что ...

на странице архива для пользовательского типа записи используйте пользовательский цикл для ВСЕХ таксономий определенного типа записи. как следующее:

taxonomy-[MY-CPT].php

против.

taxonomy-[MY-CUSTOM-TAXONOMY].php

На самом деле я пытаюсь сделать то же самое, что и мы, я дам вам знать, что я придумаю.

ПРИМЕЧАНИЕ, там я только что составил is_in_taxonomy ()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...