Post A Tipi Taksonomiye Bağlı Olun


13

Bir sınıflandırma veya terim verildiğinde, sınıflandırma işleminin bağlı olduğu herhangi bir / tüm yazı türlerini çekmek mümkün müdür?

Örneğin, taksonomisinde inşa bilerek categoryveya bir terim veriliyor categorytaksonomisinde, tersine mühendislik için bir fonksiyon vardır categorybir sınıflandırma olduğunu post?

Gereksiz Bilgi

Özellikle posta türünü bilmek gerekir taksonomi açısından bazı özel alanlarla çalışıyorum, ancak URL'de yazı türü parametresi sorunla karşılaşmak için herhangi bir nedenle orada değilse.

Yanıtlar:


12

Global $wp_taxonomiesdeğişkene bakarsak, ilişkili nesne türlerini görürüz.

Bunu veya hatta temel işlevleri yapmanın daha iyi yolları olabilir, ancak aşağıdakileri deneyebilirsiniz:

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

varsayılan kurulum için şunları elde edersiniz:

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

çıktı ile:

Array
(
    [0] => post
)

8

İle tersini yapabilirsiniz get_object_taxonomies. get_post_typesHer biri için kaydedilen sınıflamaları kontrol etmek için yazı türlerini yinelemek için ile birleştirin .

EDIT - Kirli globals kullanmadan @ birgire işleviyle aynı çıktıyı üreten bir örnek.

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

$wp_taxonomiesGlobal değişkeni doğrudan kullanmaya gerek yoktur çünkü WordPress, içindeki get_taxonomy()sınıflandırmalara erişme işlevine sahiptir (sürüm 2.3.0'dan bu yana çekirdekte). WordPress 4.7.0 olduğundan dönüş türü özelliği olan bir WP_Taxonomynesnedir$object_type

$taxonomy = get_taxonomy( 'category' );
print_r( $taxonomy->object_type );
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.