Obtener el tipo de publicación A la que se adjunta una taxonomía

10

Al recibir una taxonomía o un término, ¿es posible extraer cualquiera o todos los tipos de publicación a los que se adjunta la taxonomía?

Por ejemplo, si se conoce la taxonomía incorporada category o se le asigna un término en la taxonomía category , ¿existe una función para aplicar ingeniería inversa que category es una taxonomía de post ?

Información innecesaria

Estoy trabajando con algunos campos personalizados en términos de taxonomía que específicamente necesitan saber el tipo de publicación, pero si el parámetro de tipo de publicación en la URL no está ahí por alguna razón, tengo problemas.

    
pregunta Howdy_McGee 18.12.2014 - 18:34

3 respuestas

11

Si echamos un vistazo a la variable global $wp_taxonomies , vemos los tipos de objetos asociados.

Puede haber mejores formas de hacer esto o incluso funciones básicas, pero puede intentar lo siguiente:

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

entonces para la configuración predeterminada obtienes:

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

con la salida:

Array
(
    [0] => post
)
    
respondido por el birgire 18.12.2014 - 19:03
7

Puedes hacer lo contrario con get_object_taxonomies . Combínelo con get_post_types para iterar sobre los tipos de publicaciones para verificar las taxonomías registradas para cada uno.

EDIT : aquí hay un ejemplo que produce el mismo resultado que la función de @birgire, sin usar globales sucios.

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;
}
    
respondido por el Milo 18.12.2014 - 19:01
1

No es necesario utilizar la variable global $wp_taxonomies directamente, ya que WordPress tiene la get_taxonomy() Función para acceder a las taxonomías en él (en el núcleo desde la versión 2.3.0). Dado que WordPress 4.7.0 el tipo de retorno es un objeto WP_Taxonomy con la propiedad $object_type

$taxonomy = get_taxonomy( 'category' );
print_r( $taxonomy->object_type );
    
respondido por el JHoffmann 08.10.2018 - 22:47

Lea otras preguntas en las etiquetas