Support » Plugins » Verfallsdatum für Menueinträge

  • Gelöst radarin

    (@radarin)


    Hallo zusammen.

    Ich habe auf einer Webseite im Hauptmenu den Eintrag ‚Aktuelles‘. Der letzte Beitrag ist schon etwas älter und alles was in dieser Kategorie zu finden ist, ist nicht mehr aktuell. Deshalb möchte ich diesen Menueeintrag nicht mehr sichtbar haben.
    Den Eintrag aus dem Menu entfernen und irgendwann mal wieder hinzufügen, sollte es wieder einen neuen Eintrag in dieser Kategorie geben, ist mir etwas zu umständlich. Ausserdem wäre es praktisch, den Menueeintrag abhängig vom Datum auszublenden. Das muss jetzt nicht automatisch abhängig vom letzten Beitrag sein, mir reicht es, wenn ich im Menu das manuell einstellen kann.
    Für Widgets gibt es das Plugin Widget Visibility Time Scheduler, gibt es sowas auch für die Menues?

    Gruß René

Ansicht von 3 Antworten - 1 bis 3 (von insgesamt 3)
  • Thread-Starter radarin

    (@radarin)

    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.

    Thread-Starter radarin

    (@radarin)

    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, 2 Monaten von radarin.

    Hallo @radarin!
    wie in dem Post gesagt:
    Wenn du statt
    visibility: hidden;
    das nimmst:
    display: none;
    klappts!

Ansicht von 3 Antworten - 1 bis 3 (von insgesamt 3)
  • Das Thema „Verfallsdatum für Menueinträge“ ist für neue Antworten geschlossen.