Obtener la publicación La taxonomía de tipo A se adjunta a

13

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

Por ejemplo, conociendo la taxonomía incorporada categoryo recibiendo un término en la categorytaxonomía, ¿hay una función de ingeniería inversa que categorysea ​​una taxonomía post?

Información innecesaria

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

Howdy_McGee
fuente

Respuestas:

12

Si miramos la $wp_taxonomiesvariable global , vemos los tipos de objeto 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
)
Birgire
fuente
8

Puedes hacer lo contrario con get_object_taxonomies. Combínelo con get_post_typespara iterar sobre los tipos de publicación para verificar las taxonomías registradas para cada uno.

EDITAR : 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;
}
Milo
fuente
3

No es necesario usar la $wp_taxonomiesvariable global directamente ya que WordPress tiene la get_taxonomy()función de acceder a las taxonomías (en el núcleo desde la versión 2.3.0). Desde WordPress 4.7.0, el tipo de retorno es un WP_Taxonomyobjeto con la propiedad$object_type

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