es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

WordPress: comprueba si la entrada actual se encuentra en alguno de los términos especificados.

Tengo un tipo de publicación personalizado llamado property y una taxonomía personalizada llamada features. En las páginas individuales de property, muestro todos los términos de features, incluidos los vacíos. Sin embargo, necesito verificar en cuáles de estos términos está presente la publicación actual.

En la salida necesito obtener algo como: ✓ cleaning X Internet ✓ home phone.

Obtengo todos los términos:

php
$features = get_terms([
'taxonomy' => 'features',
'hide_empty' => false,
]);

Luego trato de ordenarlos y verificar si hay una publicación actual en el término que se está revisando.

php
foreach ($features as $feature) :
if (has_term($feature)) {
echo '✓' . $feature->name;
} else {
echo 'X' . $feature->name;
}
endforeach;

Pero obtengo:

X cleaning X Internet X home phone

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para verificar correctamente si la publicación actual está presente en un término de la taxonomía personalizada “features”, es necesario pasar el ID de la publicación como segundo parámetro de la función “has_term()”. Aquí está el código corregido:

    $features = get_terms([
        'taxonomy' => 'features',
        'hide_empty' => false,
    ]);
    
    foreach ($features as $feature) {
        if (has_term($feature->term_id, 'features', get_the_ID())) {
            echo '✓' . $feature->name;
        } else {
            echo 'X' . $feature->name;
        }
    }
    

    Se pasa el ID del término actual a la función “has_term()”, junto con el nombre de la taxonomía y el ID de la publicación actual (que se obtiene con la función “get_the_ID()”).

    Esto debería producir el resultado deseado: ✓ cleaning X Internet ✓ home phone.

Comments are closed.