Estoy creando un menú de selección de edad en el administrador, poblado desde una taxonomía de age
. La taxonomía es jerárquica de la siguiente manera:
- 18-25 (padre, ID 183)
- 18 (niño)
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26-30 (padre, ID 184)
- 26
- 27
- 28
- 29
- 30
Me gustaría enumerar solo a los niños (18, 19, etc.) y no a los padres (18-25, 26-30), etc. Actualmente estoy usando get_terms
el parent
argumento, pero no acepta más de 1 ID de padre. Esto es lo que tengo hasta ahora, que muestra a los niños de 18 a 25 años.
$ages = get_terms( 'age', array(
'hide_empty' => 0,
'parent' => '183',
));
Esto es lo que quiero que haga, pero no es compatible. También lo he intentado con una matriz, pero tampoco funciona.
$ages = get_terms( 'age', array(
'hide_empty' => 0,
'parent' => '183,184',
));
Veo que hay una función get_term_children , pero tampoco estoy seguro de cómo usarla, ya que parece que solo acepta un valor también. Por ejemplo: en este ejemplo, crearía una lista desordenada pero podría modificar para seleccionar el menú.
<?php
$termID = 183;
$taxonomyName = "age";
$termchildren = get_term_children( $termID, $taxonomyName );
echo '<ul>';
foreach ($termchildren as $child) {
$term = get_term_by( 'id', $child, $taxonomyName );
echo '<li><a href="' . get_term_link( $term->name, $taxonomyName ) . '">' . $term->name . '</a></li>';
}
echo '</ul>';
?>
fuente
get_terms
dos veces y fusionar las dos matrices de resultados?get_terms
llamada). Tu pregunta se lee como si quisieras a todos los hijos de 2 términos de padres en particular ...Respuestas:
Esto debería funcionar para usted:
fuente
$term->name
no es válidoget_term_link()
, solo acepta el término ID, babosa u objetoTambién puedes hacer:
He notado que el padre tiene el campo "padre" igual a 0, y un niño tiene su identificación padre en él.
fuente
wpse_exclude_top
parámetro agregado a los argumentos de la consulta ;-). Sin embargo, estoy de acuerdo, esto es más rápido que la respuesta aceptadawpse_exclude_top
yexclude_top
no las encontré. Tampoco Google sabe de eso. ¿Dónde está documentado?Podemos excluir a los padres de nivel superior al filtrarlos usando el
terms_clauses
filtro para alterar la consulta SQL antes de que se ejecute. De esta manera, no necesitamos omitir a los padres en elforeach
ciclo final, ya que no están en la matriz de términos devueltos, esto nos ahorra trabajo y codificación innecesarios.Puedes probar lo siguiente:
Para excluir a los padres de nivel superior, ahora podemos pasar
'wpse_exclude_top' => 1
con nuestra variedad de argumentos. El nuevowpse_exclude_top
parámetro es compatible con el filtro de arribaSolo una nota,
get_term_link()
no acepte el término nombre, solo, slug, ID o el término completo objeto. Para el rendimiento, siempre pase el término objeto aget_term_link()
si el término objeto está disponible ( como en este caso )fuente
¿Por qué no puedes simplemente establecer el
childless
argumento en verdadero?fuente
childless
argumento en verdadero significa que solo puede ir a 1 nivel de profundidad, por lo que esto no funciona para taxonomías con 3 o más niveles.Si muestra varios hijos de padres, puede intentar esto. Muestra el término de mención ids término hijo.
fuente