Dapatkan Post Type A Taksonomi Terlampir

13

Diberikan taksonomi atau istilah, apakah mungkin untuk menarik semua / semua jenis pos yang dilampirkan taksonomi?

Misalnya, mengetahui taksonomi bawaan categoryatau diberi istilah dalam categorytaksonomi, apakah ada fungsi untuk merekayasa balik yang categorymerupakan taksonomi post?

Info Tidak Dibutuhkan

Saya bekerja dengan beberapa bidang khusus dalam istilah taksonomi yang secara khusus perlu mengetahui jenis posting, tetapi jika parameter tipe posting di URL tidak ada karena alasan apa pun saya mengalami masalah.

Howdy_McGee
sumber

Jawaban:

12

Jika kita mengintip ke dalam $wp_taxonomiesvariabel global kita melihat tipe objek terkait.

Mungkin ada cara yang lebih baik untuk melakukan ini atau bahkan fungsi inti, tetapi Anda bisa mencoba yang berikut:

function wpse_172645_get_post_types_by_taxonomy( $tax = 'category' )
{
    global $wp_taxonomies;
    return ( isset( $wp_taxonomies[$tax] ) ) ? $wp_taxonomies[$tax]->object_type : array();
}

maka untuk pengaturan default yang Anda dapatkan:

$out = wpse_172645_get_post_types_by_taxonomy( 'category' );
print_r( $out );

dengan output:

Array
(
    [0] => post
)
birgire
sumber
8

Anda dapat melakukan yang sebaliknya get_object_taxonomies. Gabungkan dengan get_post_typesuntuk beralih pada jenis posting untuk memeriksa taksonomi yang terdaftar untuk masing-masing.

EDIT - Inilah contoh yang menghasilkan keluaran yang sama dengan fungsi @ birgire, tanpa menggunakan global yang kotor.

function wpse_172645_get_post_types_by_taxonomy( $tax = 'category' ){
    $out = array();
    $post_types = get_post_types();
    foreach( $post_types as $post_type ){
        $taxonomies = get_object_taxonomies( $post_type );
        if( in_array( $tax, $taxonomies ) ){
            $out[] = $post_type;
        }
    }
    return $out;
}
Milo
sumber
3

Tidak perlu menggunakan $wp_taxonomiesvariabel global secara langsung karena WordPress memiliki get_taxonomy()fungsi untuk mengakses taksonomi di dalamnya (dalam inti sejak versi 2.3.0). Karena WordPress 4.7.0 jenis kembali adalah WP_Taxonomyobjek dengan properti$object_type

$taxonomy = get_taxonomy( 'category' );
print_r( $taxonomy->object_type );
JHoffmann
sumber