Ein anderer Lösungsansatz wäre, mit einer Funktion CSS in den Header zu schreiben, der den Menueintrag unsichtbar macht. Das habe ich soweit hingekriegt und kann den Eintrag einfach in einem Snippet an- und ausschalten.
Eleganter wäre, wenn sich feststellen liesse, ob sich in der Kategorie Beiträge befinden. Die Kategorie ‚Aktuelles‘ hat die ID ’43‘. Allerdings bin ich noch nicht fündig geworden mit welcher Funktion sich das bewerkstelligen lässt.
Ich hab mir jetzt was gebastelt, das mich einigermassen zufrieden stellt.
Ich hab nach einem Code gesucht, der mir an einer beliebigen Stelle den Inhalt einer Kategorie listet und diesen angepasst. Im Script gebe ich an, welche KategorieID und dass nur ein Beitrag geladen werden soll. Gibt es nun in der Kategorie aktive Beiträge, so ist die Variable $content mit irgend einem Inhalt gefüllt, bei einer leeren Kategorie ist auch die Variable leer. Damit mache ich nun die Auswertung und schreibe mir einen entsprechenden CSS Code in den Header des Frontend. Im Backend brauche ich diese Funktion nicht.
Das Ganze ist ein kleiner Murks und hat den Schönheitsfehler, dass lediglich der Link im Menu unsichtbar gemacht wird, nicht aber der komplette Code für den Eintrag entfernt wird. Je nach Theme und Position des Eintrages nicht die optimale Darstellung. Bei meinem Theme fällt das nicht auf. Aber auch nur weil ich die Postition des Eintrages geändert habe.
// Diese Funktion wird nur im Frontend angewendet
function shortcode_posts_function(){
// Parameter
$args = array(
'category' => '43', // Kategorie ID
'numberposts' => 1 // Anzahl der zu ladenden Beiträge
);
//Posts holen
$posts = get_posts($args);
//Inhalte sammeln
$content = "";
foreach ($posts as $post) {
$content .= $post->post_title;
}
// auswerten
if ($content == "" ){
// CSS schreiben, wenn Content leer
add_action('wp_head', 'invisible_menu');
function invisible_menu() {
echo "<style>
.menu-item-748 {
visibility: hidden;
}
</style>";
}
}
if ($content != "" ){
// CSS schreiben, wenn Content vorhanden
add_action('wp_head', 'show_menu');
function show_menu() {
echo "<style>
.menu-item-748 {
font-weight: bolder;
}
</style>";
}
}
}
// Funktion beim Laden der Seite ausführen
add_action( 'init', 'shortcode_posts_function' );
Beiträge in dieser Kategorie erhalten von mir ein Verfallsdatum, sodass keine Beiträge älter als 2 Wochen darin enthalten sind.
-
Diese Antwort wurde geändert vor 4 Jahren, 11 Monaten von René A. Da Rin.
Anonymous User 14429768
(@anonymized-14429768)
Hallo @radarin!
wie in dem Post gesagt:
Wenn du statt
visibility: hidden;
das nimmst:
display: none;
klappts!