Como obter um nome de termo de taxonomia pela lesma?

22

Se conheço uma lesma de termo de taxonomia, como posso obter o nome desse termo?

Carson
fonte
você quer criar um link, título ???
xLRDxREVENGEx

Respostas:

38

A função que você está procurando é get_term_by. Você usaria como tal:

<?php $term = get_term_by('slug', 'my-term-slug', 'category'); $name = $term->name; ?>

Isso resulta em $termum objeto que contém o seguinte:

term_id
name
slug
term_group
term_taxonomy_id
taxonomy
description
parent
count

O codex faz um ótimo trabalho ao explicar esta função: http://codex.wordpress.org/Function_Reference/get_term_by

tollmanz
fonte
Você chegou antes de mim. Isto é exatamente o que eu faria.
XLRDxREVENGEx
1
E se você não tiver a lesma de taxonomia?
EkoJR 7/17/17
2

Isso fornece uma resposta quando a taxonomia está indisponível / desconhecida .

No meu caso, ao usar get_term_by , houve alguns casos em que havia apenas o termo Slug (sem termo ID ou taxonomia). O que me levou aqui. No entanto, a resposta fornecida não resolveu completamente o meu problema.

Solução para vazio $taxonomy

// We want to find the ID to this slug.
$term_slug = 'foo-bar';
$taxonomies = get_taxonomies();
foreach ( $taxonomies as $tax_type_key => $taxonomy ) {
    // If term object is returned, break out of loop. (Returns false if there's no object)
    if ( $term_object = get_term_by( 'slug', $term_slug , $taxonomy ) ) {
        break;
    }
}
$term_id = $term_object->name;

echo 'The Term ID is: ' . $term_id . '<br>';
var_dump( $term_object );

Resultado

The Term ID is: 32
object(WP_Term)
  public 'term_id' => int 32
  public 'name' => string 'Example Term'
  public 'slug' => string 'example-term'
  public 'term_group' => int 0
  public 'term_taxonomy_id' => int 123
  public 'taxonomy' => string 'category'
  public 'description' => string ''
  public 'parent' => int 0
  public 'count' => int 23
  public 'filter' => string 'raw'

Como se segue, o conceito obtém uma matriz de $taxonomies, faz uma loop na matriz e, se get_term_by()retorna uma correspondência, ele imediatamente interrompe o loop foreach.

Nota: Tentei procurar um método para obter a taxonomia associada (ID ou Slug) do Term Slug, mas infelizmente não consigo encontrar nada disponível no WordPress.

EkoJR
fonte
0

obrigado, isso funcionou para mim.

Criei uma função e a usei novamente e sempre que necessário.

function helper_get_taxonomy__by_slug($term_slug){
    $term_object = "";
    $taxonomies = get_taxonomies();
    foreach ($taxonomies as $tax_type_key => $taxonomy) {
        // If term object is returned, break out of loop. (Returns false if there's no object);
        if ($term_object = get_term_by('slug', $term_slug, $taxonomy)) {
            break;
        }else{
            $term_object = "Warn! Helper taxonomy not found.";
        }
    }
    return $term_object;
}
mahesh chhetri
fonte