it-swarm.com.de

has_term if/echo else/echo Funktion

oK, also habe ich ein Navigationsmenü mit der obersten Ebene der Menüelemente als statische Seiten. Wenn Sie eine davon markieren oder besuchen, wird ein Untermenü angezeigt. Jedes von ihnen hat ein eigenes Untermenü und jedes Untermenü ist voll von benutzerdefinierten Taxonomiebegriffen. Da WordPress nur die aktuelle Menüelementklasse auf einer Archivseite angibt, muss ich entweder meine eigene Klasse hinzufügen oder nur ein benutzerdefiniertes CSS hinzufügen, um den übergeordneten Begriff anzuzeigen und hervorzuheben, wenn ein einzelnes Element angezeigt wird.

Mein Problem ist, dass der Code funktioniert, aber dann funktioniert er nicht mehr. Siehe den Code unten

<? 
$has_news = has_term('news');
if ($has_news)
    echo '<style type=text/css>#navbar{display:block}';
else
    echo '';
?>

Dies hängt mit einer meiner anderen Fragen zusammen, aber ich dachte, dass es am besten für sich alleine mit verschiedenen Tags geeignet ist.

Verwandte Frage: Begriffe im Navigationsmenü hervorheben

wpversion: 3.1.2

1
xLRDxREVENGEx

Problem ist, dass Sie einen $post->ID übergeben müssen, um nicht return false.

Verwenden Sie besser is_object_in_taxonomy($object_type, $taxonomy) und geben Sie sowohl den Begriff als auch die Steuer in die Funktion ein. Es gibt (boolean) zurück. Fügen Sie einfach Ihre Klasse basierend auf dem Ergebnis hinzu:

echo $class = is_object_in_taxonomy( 'news', 'your_taxonomy' ) ? 'current-whatever' : '';

// or: (simplified for readabilities sake:

// set empty and override only in case.
// So you avoid dropping errors if the condition was not met and $current not set.
$class = '';
if ( is_object_in_taxonomy( 'news', 'your_taxonomy' ) )
    echo $class = 'current-whatever';
1
kaiser