• Gelöst ulrichhoffmann

    (@ulrichhoffmann)


    Hallo,

    ich habe zahlreiche Antwortbausteine auf einer lokalen Installation von WordPress liegen. Nun würde ich mir gern alle anzeigen lassen, denen NICHT ein bestimmtes Schlagwort zugeordnet wurde. (Bsp.: „Zeig mir alle Beiträge, die NICHT das Schlagwort ‚überarbeitet‘ haben.“).

    Notfalls würde als Workaround auch helfen: Zeig mir alle Beiträge, die NICHT in einer bestimmten Kategorie sind.

    Ist das möglich? Ich finde Anleitungen, wie ich Kategorien und Schlagwörter aus den Suchergebnissen ausschließen kann, aber ich will das Gegenteil erreichen.

    Danke + viele Grüße, Ulrich

Ansicht von 12 Antworten – 1 bis 12 (von insgesamt 12)
  • Hallo,
    das kannst du über einen kleinen Code-Schnipsel in der functions.php lösen. In dem Code-Schnipsel betrifft das einzelne Beiträge oder Kategorien, ist aber durchaus durch eine entsprechende Änderung auch hinsichtlich Schlagwörtern erweiterbar:

    function exclude_single_posts_home($query) {
      if ( $query->is_home() && $query->is_main_query() ) {
    
          /* zeigt einen bestimmten Beitrag nicht: */
          /* $query->set( 'post__not_in', array(6873) ); */ 
    
          /* zeigt eine bestimmte Kategorie (in dem Fall "Keine Anzeige" nicht an) */
          $query->set('cat', '-1486'); 
      }
    }
    add_action( 'pre_get_posts', 'exclude_single_posts_home' );

    Einen entsprechenden Beitrag habe ich vor einiger Zeit zu dem Thema mit weiteren Möglichkeiten auch mit Plugins erstellt.

    Viele Grüße
    Hans-Gerd

    Thread-Starter ulrichhoffmann

    (@ulrichhoffmann)

    Vielen Dank!

    Mein WordPress jammert allerdings:

    Snippet automatically deactivated due to an error on line 2:
    Syntax error, unexpected token „&“.

    Was tun? 🙂

    Viele Grüße
    Ulrich

    Hallo,
    ich habe mir das gerade noch mal angesehen und das Code-Snippet über das Plugin Code Snippets aktiviert.

    Das funktioniert bei mir einwandfrei in der Testumgebung.

    Wo hast du das Snippet denn eingefügt? – Wenn du kein Child Theme hast, dann kannst du auch das o. g. Plugin verwenden.

    Viele Grüße
    Hans-Gerd

    Thread-Starter ulrichhoffmann

    (@ulrichhoffmann)

    Ja, so habe ich es gemacht. Code Snippets Plugin installiert, dann unter dem Reiter „Funktionen“ das Snippet neu hinzugefügt.

    Moderator Bego Mario Garde

    (@pixolin)

    Moderator (nicht mehr aktiv)

    Üblicherweise treten solche Fehler nach einem Übertragungsfehler auf. Kopier die Funktion nochmal neu und schau, ob der Fehler bestehen bleibt.

    Hallo,
    hier noch mal ein Screenshot dazu (bei Klick auf das Bild, wird das Bild vergrößert):

    Code Snippet

    So funktioniert das bei mir. Bezüglich Schlagwörtern (Tags), habe ich hier noch einen etwas umfangreicheren Beitrag gefunden.

    Viele Grüße
    Hans-Gerd

    Thread-Starter ulrichhoffmann

    (@ulrichhoffmann)

    Verrückt. Neugestartet, neu angemeldet, jetzt funktioniert das Einfügen des Snippets.

    OK.

    Wie nutze ich die Funktion jetzt? Die Beiträge, die ich ausblenden will, haben das Schlagwort „JK“.

    Einfach nur „-JK“ in das Suchfeld einzutippen führt mich noch nicht ans Ziel.

    Ich bin nah dran, aber noch nicht ganz 😉

    Danke + viele Grüße, Ulrich

    • Diese Antwort wurde geändert vor 1 Jahr, 5 Monaten von ulrichhoffmann.
    Moderator Bego Mario Garde

    (@pixolin)

    Moderator (nicht mehr aktiv)

    Probier mal folgenden Code:

    function exclude_posts( $query ) { 
      if ( $query->is_home() ) {  
        $query->set( 'tag__not_in', array( 42 ) ); 
      } 
    } 
    
    add_action( 'pre_get_posts', 'exclude_posts' );

    Die ID des Tags 42 musst du mit der richtigen ID des Schlagworts „JK“ ersetzen. Die ID findest du heraus, indem du unter Beiträge > Schlagwörter mit der Maus über den Eintrag fährst. Du siehst dann in der Statusleiste deines Browsers den Link, der in etwa so aussehen sollte:

    https://example.com/wp-admin/term.php?taxonomy=post_tag&tag_ID=24&post_type=post&wp_http_referer=%2Fwp-admin%2Fedit-tags.php%3Ftaxonomy%3Dpost_tag

    In diesem Beispiel hat das Schlagwort die ID 24.

    Als Ergebnis werden in der Beitragsübersicht alle Beiträge angezeigt, die nicht das Tag 24 haben.

    Damit du eine bessere Vorstellung hast, wofür das gut ist: Der Hook (eine im PHP-Code von WordPress definierte Schnittstelle) pre_get_posts führt die Funktion exclude-posts aus, bevor die Beiträge („posts“) abgerufen werden.
    Die Funktion sorgt dafür, dass die Abfrage manipuliert wird, wenn (und nur wenn) die Beitragsübersichtsseite („Home“) geladen wird. Die Abfrage wird dann so gesetzt, dass sie nur Beiträge abruft, die nicht das Tag mit der verwendeten ID enthält. Möchtest du mehrere Schlagwörter ausschließen, kannst du das Array auch erweitern:

    $query->set( 'tag__not_in', array( 42, 87, 123 ) ); 
    • Diese Antwort wurde geändert vor 1 Jahr, 5 Monaten von Bego Mario Garde. Grund: Erläuterung des Code
    Thread-Starter ulrichhoffmann

    (@ulrichhoffmann)

    Danke, so klappt es. Ich habe jetzt (erst) begriffen, dass ich über das Snippet die Anzeige der Beiträge auf der Homepage verändere. Das war anders als von mir erwartet (ich hatte auf ein Suchergebnis gezielt), aber ist für meine Zwecke absolut ausreichend.

    Außerdem, falls noch mal irgendwer in diesen Thread schaut, musste ich erst noch heraussuchen (https://wordpress.com/de/forums/topic/wie-finde-ich-die-tag-id-heraus/, https://wordpress.com/support/pages/#how-to-find-the-page-id), dass die Tag-ID nur im Editiermodus angezeigt wird. Dann war alles weitere aber genau wie oben beschrieben.

    Ganz herzlichen Dank! Problem gelöst, hätte ich allein im Leben nicht hinbekommen!

    super – freut uns. Danke für die Rückmeldung und die weiteren Links.

    Denkst du bitte beim nächsten Mal daran, das Thema dann auch als gelöst zu markieren, wenn das Thema für dich erledigt ist. Danke.
    Gelöst
    Die Option findest du rechts in der Sidebar. Das habe ich jetzt schon gemacht.

    Moderator Bego Mario Garde

    (@pixolin)

    Moderator (nicht mehr aktiv)

    WordPress.com ist ein kommerzieller Webhostinganbieter des WordPress-Mitgründers Matt Mullenweg. Die Software WordPress, um die es hier geht,wird auf WordPress.com in einer modifizierten Form eingesetzt. Anleitungen, die sich auf WordPress.com beziehen, sind deshalb bei selbstgehosteten WordPress-Websites immer mit Vorsicht zu genießen.

    Thread-Starter ulrichhoffmann

    (@ulrichhoffmann)

    Beide Schlusshinweise fürs nächste Mal im Geist abgespeichert 🙂

Ansicht von 12 Antworten – 1 bis 12 (von insgesamt 12)
  • Das Thema „Suche nach allen Beiträgen, die NICHT ein bestimmtest Schlagwort haben“ ist für neue Antworten geschlossen.