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.

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
)

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;
}

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 );
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.