• Gelöst wordsandro

    (@wordsandro)


    Guten Tag,

    erstmal freue ich mich, dass es eine so tolle Unterstützung in Form dieses Forums gibt.

    Ich habe nun eine Frage:
    Ich möchte bei einzenen Beiträgen gern die Anzeige der Meta Informationen wie Author, Datum, Kategorie nicht anzeigen. Ich möchte aber keine globale Lösung, welche diese Option auf allen Beiträgen entfernt.

    Habt Ihr hierzu eine einen Lösungsvorschlag für mich?

    Mit besten Grüßen

    Sandro

Ansicht von 5 Antworten – 1 bis 5 (von insgesamt 5)
  • Moderator Bego Mario Garde

    (@pixolin)

    Moderator (nicht mehr aktiv)

    Hallo @wordsandro und willkommen im Forum,

    ich nehme an, du meinst mit Meta-Angaben die Informationen, die zusätzlich zum Beitragsinhalt unter der Überschrift angezeigt werden? Wenn du diese Angaben nur fallweise ausblenden möchtest, müsstest du ein Child Theme erstellen und in dem Template zur Anzeige der Einzelbeiträge ein if-Statement einbauen, dass z.B. ein Custom Field abfragt.

    Falls du jetzt nur „Chinesisch verstanden“ haben solltest: die Funktion lässt sich mit Bordmitteln von WordPress nicht umsetzen und erfordert eine Anpassung durch (Um-)Programmierung eines eigenen Templates, was zumindest Grundkenntnisse in HTML, PHP und CSS erfordert.

    Eine einfachere Lösung (eigentlich eher ein Workaround) wäre, für das Ausblenden der Metainformationen eine zusätztlichen CSS-Regel im Custmomizer einzutragen. WordPress fügt Beiträgen in der Einzelansicht eigene CSS-Klassen für den Autor (z.B. author-id-3) und die Beitrags-ID (z.B. postid-42) ein. Wenn die Meta-Angaben zum Autoren z.B. (wie im Theme Twenty Seventeen) in einem <span>-Tag mit der CSS-Klasse byline ausgegeben werden, würde die CSS-Regel .author-id-3 .byline { display: none; } die Angabe „von Berta Beitragsautorin“ ausgeblendet (würde aber im Seitenquelltext noch abrufbar sein).

    Die Autorenangaben stecken aber auch noch an anderen Stellen und können z.B. per RSS-Feed oder REST API abgerufen werden. Wenn der Autorenname aus Gründen der Vertraulichkeit überhaupt nicht auftauchen soll, könntest du „pauschale“ Autorenangaben wie „ein/e Mitarbeiter/in“ oder „eine Autor/in“ verwenden.

    Thread-Starter wordsandro

    (@wordsandro)

    Hallo @pixolin,

    vielen dank für die schnelle Antwort. Du hast recht, ich meine die zusätzlichen Informationen zum Beitragsinhalt unter der Überschrift. Für mich ist dein erster Vorschlag am interessantesten und zu Glück auch kein Chinesisch, da ich ein wenig von PHP verstehe und auch schon die ein oder andere if-Anbfrage geschrieben habe. Allerdings fehlt mir vertieftes Fachwissen zu PHP. Mit CSS kenne ich mich sehr gut aus, möchte aber ungern bei jedem Beitrag (wo es benötigt wird) zusätzliches CSS notieren. Kannst du mir eventuell nähere Informationen zu dem vorgeschlagenen if-Statement geben, dass ein Custom Field abfragt? Hast du eventuell ein Besipiel oder eine Quelle wo man das nachlesen kann?

    Vielen Dank schon mal im voraus für deine Mühe.

    Mit besten Grüßen

    Sandro

    Moderator Bego Mario Garde

    (@pixolin)

    Moderator (nicht mehr aktiv)

    Aus Bequemlichkeit nehme ich gerne Advanced Custom Fields, um benutzerdefinierte Felder einzurichten. Hier richtest du ein neues Feld „Autor verstecken“ ein, klickst auf neues Feld und gibst als Bezeichnung „Autor verstecken?“ und als Namen „hide_author_meta“ein. Advanced Custom Fields bietet verschiedene Feldtypen, darunter auch eine Auswahlbox „Ja/Nein“, das als Kontrollkästchen beim Bearbeiten von Beiträgen angezeigt wird. Als Standardwert lässt du das Kästchen frei, wenn üblicherweise der Autor weiter angezeigt werden soll. So brauchst du nur in den Ausnahmefällen, in denen der Autor nicht angegeben wird, das Kästchen anklicken. Als Regel gibst du noch an, ob das Feld nur bei Beiträgen oder auch bei anderen Inhaltsarten (z.B. Seiten) angezeigt werden soll.

    Als nächstes geht es um die Ausgabe des Autors. Dazu musst du zuerst prüfen, welches Template dafür zuständig ist. Für einzelne Beiträge kann das single.php sein oder aber, wie z.B. im Standardtheme Twenty Seventeen die index.php, in der das Template-Part template-parts/content.php geladen wird.

    In diesem Template wird mit

    <?php
      if ( 'post' === get_post_type() ) {
      echo '<div class="entry-meta">';
        if ( is_single() ) {
    	twentyseventeen_posted_on();
        } else { …

    die Funktion twentyseventeen_posted_on() aufgerufen, die wiederum (such, such, … aha!) in der php-Datei template-tags.php definiert wird:

    function twentyseventeen_posted_on() {
    
      // Get the author name; wrap it in a link.
      $byline = sprintf(
        /* translators: %s: post author */
        __( 'by %s', 'twentyseventeen' ),
        '<span class="author vcard"><a class="url fn n" href="' . esc_url( get_author_posts_url( get_the_author_meta( 'ID' ) ) ) . '">' . get_the_author() . '</a></span>'
      );
      // Finally, let's write all of this to the page.
      echo '<span class="posted-on">' . twentyseventeen_time_link() . '</span><span class="byline"> ' . $byline . '</span>';
    }

    Praktischerweise ist diese Funktion „pluggable“, d.h. sie wird nur aufgerufen, wenn nicht bereits eine Funktion mit dem gleichen Namen existiert. Du kannst also z.B. in der functions.php eines Child Themes die Funktion nach eigenen Wünschen umschreiben. Hier kommt jetzt eine Abfrage des eingangs definierten benutzerdefinierten Felds hinzu, die mit einem if-Statment verknüpft wird:

    function twentyseventeen_posted_on() {
    
      /*
      * Wir geben die Zeile nur aus, wenn der Wert
      * des benutzerdefinierten Felds nicht auf true
      * gesezt wurde.
      * Zur Erinnerung: true bedeutet "verstecken"!
      */
      if ( get_field( 'hide_author_meta' ) ) {
          $byline = '';
      } else {
          // Get the author name; wrap it in a link.
          $byline = sprintf(
              /* translators: %s: post author */
              __( 'by %s', 'twentyseventeen' ),
              '<span class="author vcard"><a class="url fn n" href="' esc_url( get_author_posts_url( get_the_author_meta( 'ID) ) ) . '">' . get_the_author() . '</a></span>'
          );
      }
    
      echo '<span class="posted-on">' . twentyseventeen_time_link() . '</span><span class="byline"> ' . $byline . '</span>';
    
    }

    Der Autor wird jetzt nur noch bei Beiträgen angezeigt, in denen nicht ausdrücklich das Kästchen „Autor verstecken“ angeklickt wurde. Deaktivierst du (versehentlich) das Plugin Advanced Custom Fields, wird der Autor bei jedem Beitrag angezeigt.

    Denk bitte daran, dass diese Ausgabe des Autoren nichts mit der Angabe im RSS-Feed oder in der REST API zu tun hat!

    Thread-Starter wordsandro

    (@wordsandro)

    Hallo,

    vielen lieben Dank für die ausführliche Beschreibung. Ich werde mir diese nun erst einmal in Ruhe anschauen. Sorry für die späte Rückmeldung.

    Mit besten Grüßen

    wordsandro

    Thread-Starter wordsandro

    (@wordsandro)

    Hallo und vielen lieben Dank nochmals für die Umfangreiche Erläuterung. Leider konnte ich die beschriebene Lösung erst kürzlich durcharbeiten. Hatte einige Überstunden auf Arbeit und bin nicht mehr dazu gekommen. Hat nun alles funktioniert. Ganz lieben Dank nochmal!

Ansicht von 5 Antworten – 1 bis 5 (von insgesamt 5)
  • Das Thema „In vereinzelten Beiträgen Meta (Author, Datum etc) abschalten?“ ist für neue Antworten geschlossen.