Support » Allgemeine Fragen » GeneratePress – erstes Bild eines Beitrags als Beitragsbild verwenden

  • Ich weiß z.B., wie man das erste Bild in einem Beitrag automatisch zum Beitragsbild (Featuered Image) macht. Kleine Ergänzung zur function.php, soweit, so gut. Mache ich, wenn nötig, aber immer ungern, weil jeder „externe“ Eingriff wieder eine zusätzliche Baustelle werden kann.

    Es könnte dafür aber auch in GeneratePress – wie bei meinem alten Theme – eine eigene Option geben, die das Problem mit einem Mausklick lösen könnte. In der Doku von GeneratePress finde ich nichts, aber das sagt noch nicht viel; meine Augen sind sehr schlecht.

    Vorteil einer Theme-internen Lösung könnte auch sein, dass ein definiertes Beitragsbild nicht vom ersten Bild des Beitrags überschrieben wird.

    Liebe Grüße
    Ernst

    Die Seite, für die ich Hilfe brauche: [Anmelden, um den Link zu sehen]

Ansicht von 14 Antworten - 1 bis 14 (von insgesamt 14)
  • Kleine Ergänzung zur function.php, soweit, so gut.

    Auch wenn es kleinkariert klingt: solche Tippfehler prägen sich schnell ins Gedächtnis ein und nachher wundert man sich, wieso nichts funktioniert. Die Datei heißt functions.php – Plural, „s“ am Ende.

    … Mache ich, wenn nötig, aber immer ungern, weil jeder „externe“ Eingriff wieder eine zusätzliche Baustelle werden kann.

    Nicht nur das, du musst auch ein Child-Theme anlegen, weil deine Anpassung sonst bei jedem Update verloren geht.

    In der Doku von GeneratePress finde ich nichts, aber das sagt noch nicht viel; meine Augen sind sehr schlecht.

    😉

    Ich würde eher vermuten, dass der Theme-Entwickler das so nicht vorgesehen hat. 🙂 Zumindest finde ich in der kostenlosen Version wenig Einstellungsmöglichkeiten für die Ansicht einzelner Beiträge. Auch der Code sieht nicht vielversprechend aus. In der Datei inc/structure/featured-images.php gibt es eine Funktion generate_post-image(), die so anfängt:

    function generate_post_image() {
            // If there's no featured image, return.
            if ( ! has_post_thumbnail() ) {
                return;
            }
    
    …

    Den Rest brauchen wir uns da nicht mehr ansehen. Kurz gesagt: Wenn es kein Beitragsbild gibt, steigt die Funktion an der Stelle aus und es wird dort, wo sonst das Beitragsbild steht, nichts ausgegeben.
    Diese Funktion müsstest du mit einer eigenen Funktion ersetzen, die

    1. prüft, ob der jeweilige Beitrag ein Beitragsbild hat
    2. falls nein, prüft ob der Beitrag Bilder als Attachment verwendet und
    3. ggf. bei der Ausgabe auf dieses Bild zurückgreift.

    Im Moment fehlt mir die Zeit, um „mal eben“ eine solche Funktion zu schreiben. Aber das ist eigentlich auch nicht der Sinn unseres Forums. Und nachher hab ich wieder alles falsch verstanden oder es kommen andere Wünsche hinzu, frag nicht …

    Thread-Starter Ernst Weinzettl

    (@ernstw)

    Danke für die schnelle Antwort!

    Die Datei heißt functions.php – Plural, „s“ am Ende.

    Klar, sorry, das war wirklich ein Tippfehler.

    Im Moment fehlt mir die Zeit, um „mal eben“ eine solche Funktion zu schreiben. Aber das ist eigentlich auch nicht der Sinn unseres Forums. Und nachher hab ich wieder alles falsch verstanden oder es kommen andere Wünsche hinzu, frag nicht

    Nein, lieber Bego Mario, ich wollte auch nicht, dass du dir da jetzt deswegen einen Kopf machst. Ich schreib mir jetzt das kurze Code Schnipsel in die functions.php und gut ist’s. Dass ich das im Child und nicht im Originaltheme mache, ist mir trotz mangelhaften Wissens klar.

    Übrigens: Ich habe auch im bezahlten Plugin, also der Pro-Version, nichts dazu gefunden. Genauso wenig wie ein Login Formular, das mein altes Theme als Widget dabei hatte. Da weiß ich aber, dass ich nichts übersehen habe, weil Tom und seine Mannen das schon einige Male im Forum begründet haben. Und es sieht so aus, als müsste ich deswegen auch noch auf eine neue Userverwaltung umstellen, weil die alte auf das WordPress-Login setzt, das nun wirklich nicht zu meiner Seite passt. Und hier mangelt es mir tatsächlich an eigenem Wissen, wie da welche Parameter übergeben würden etc. Zahlt sich auch nicht aus, ich werde ein Plugin finden (und dann wahrscheinlich jeden registrierten User einzeln händisch umbiegen müssen).

    Na ja, man gönnt sich ja sonst nichts. 😉

    lG Ernst

    Ähm, nur damit wir uns nicht falsch verstehen:

    Ich schreib mir jetzt das kurze Code Schnipsel in die functions.php und gut ist’s.

    Welches Code-Schnipsel meinst du?

    Thread-Starter Ernst Weinzettl

    (@ernstw)

    In die functions.php:

    //macht das erste Inhaltsbild zum Beitragsbild
    function main_image() {
    $files = get_children('post_parent='.get_the_ID().'&post_type=attachment
    &post_mime_type=image&order=desc');
    if($files) :
    
    $keys = array_reverse(array_keys($files));
    $j=0;
    $num = $keys[$j];
    $image=wp_get_attachment_image($num, 'large', true);
    $imagepieces = explode('"', $image);
    $imagepath = $imagepieces[1];
    $main=wp_get_attachment_url($num);
    $template=get_template_directory();
    $the_title=get_the_title();
    print "<img class="frame" src="$main" alt="$the_title" />";
    endif;
    }

    Und dann noch ins Child Theme

    <?php if (  (function_exists('has_post_thumbnail')) && (has_post_thumbnail())  ) {
      echo get_the_post_thumbnail($post->ID);
    } else {
       echo main_image();
    } ?>

    Klingt, wenn ich es so niederschreibe schon wieder fast zu aufwändig/gefährlich.

    Es gäbe da auch ein Plugin „Easy Add Thumbnail“ von Samuel Aguilera, das genau das macht. Nun ja, ein Übel oder das andere. Ich denke fast, ich würde das Plugin vorziehen.

    Gut, aber das ist im Moment noch ein Nebenschauplatz. Im Moment teste ich da weder an der Domain noch an der relevanten Subdomain.

    lG Ernst

    OK, dazu musst du dann noch content.php anpassen.

    Das Plugin macht ja etwas anderes. Es prüft, ob Beiträge ein Featured Image haben und fügt sonst (unwiderruflich) ein im Beitrag verwendetes Bild als Featured Image hinzu. Ich bin mir da nicht so sicher, ob das eine gute Idee ist.

    Thread-Starter Ernst Weinzettl

    (@ernstw)

    Jetzt mal abgesehen davon, dass ich ohnehin das Plugin verwenden werde, das aber genauso arbeitet: Ich weiß schon, dass das nicht die reine Anzeige, sondern das Einfügen betrifft. Das würde für mich schon passen.

    Ich verwende die Beitragsbilder ausschließlich zur Vorschau in der Sidebar, lasse sie nicht im Beitrag anzeigen – was auch bei GeneratePress optional möglich ist.

    ABER. Es zeigt sich leider, dass (zumindest beim Plugin) leider wirklich nur das erste Beitragsbild eingetragen, aber leider nicht mit dem Permalink zur Seite versehen wird. Das ist nicht so prickelnd – auch im Hinblick auf Social Midia.

    Mein bisheriges Theme Hat das erste Bild des Beitrags gar nicht eingetragen, sondern nur bei der Anzeige verwendet, wenn kein anderes Beitragsbild definiert wurde – zumindest soweit die Option so gesetzt war. Dabei war aber das „virtuelle Beitragsbild“ dann auch mit einem Link zum Beitrag versehen.

    Also noch keine gute Lösung gefunden. Und ich hatte mich schon so gefreut. Mühsam nährt sich das Eichhörnchen.

    lG Ernst

    Hallo,
    es könnte sein, dass das Plugin
    Auto Featured Image (Auto Post Thumbnail) eine Lösung wäre. Ich habe das Plugin gerade auf einer Testinstanz mit GeneratePress und dem kostenpflichtigen Addon GP Premium getestet.
    Viele Grüße
    Hans-Gerd

    Thread-Starter Ernst Weinzettl

    (@ernstw)

    Danke! Schau ich mir gleich morgen an. Für heute habe ich schon dicht gemacht.

    Liebe Grüße Ernst

    Thread-Starter Ernst Weinzettl

    (@ernstw)

    Beim Test für „Auto Featured Image“ ist eine Seltsamkeit aufgetaucht, die euch sicher keine Probleme bereiten würde:

    Das bereits eingetragene Beitragsbild verdeckt die Optionen für Bearbeiten und Löschen:

    Wie lösche ich nun das Beitragsbild, um mir anzusehen, wie „Auto Featured Image“ mit der Situation umgeht?

    lG Ernst

    Thread-Starter Ernst Weinzettl

    (@ernstw)

    Ich mache da irgendetwas falsch.

    Bisher (altes Theme) war es so, dass ich einstellen konnte, das erste Bild eines Beitrags als Featured Image anzuzeigen (nicht einzutragen). Es wurde gleich mit dem Beitrag verlinkt, konnte also in der Übersicht direkt angeklickt werden.

    Jetzt ist es so, egal welches der beiden Plugins ich verwende, dass das erste Bild eines Beitrags als Featured Image eingetragen wird. Es wird dabei aber nicht verlinkt. Verhindert das GeneratePress die Verlinkung? Habe ich etwas falsch eingestellt (kann da nichts finden)?

    Warum bräuchte ich die Verlinkung? Abgesehen von Social Media konnte bei mir im Widget „Aktuelle Beiträge/Posts“ nicht nur der angezeuigte Titel, sondern auch das Thumbnail des Beitragsbildes angeklickt werden, um den entsprechenden Beitrag aufzurufen.

    Ich komme mir vor wie Rudi Ratlos.

    lG Ernst

    Ob ein Featured Image verlinkt ist, hängt vom Template bzw. den im Theme verwendeten Funktionen ab. Für die Beitragsübersicht ist hier die Funktion inc/structure/features-images.php zuständig. Wie du im Code siehst, wird allerdings das Beitragsbild (sofern vorhanden) nicht nur ausgegeben, sondern auch mit einem Link versehen. Du kannst das testen, indem du einen Beitrag mit Beitragsbild erstellst.

    Was meinst du mit „Abgesehen von Social Media“?
    Social Media zieht sich das Beitragsbild aus einem og:image-Tag, wenn du ein SEO-Plugin verwendest, in dem du das Bild angibst.
    (vgl. Advanced Technical SEO: How social image sharing works and how to optimize your og:image tags)
    Lesenswerter Beitrag dazu: How to Fix Facebook Incorrect Thumbnail Issue in WordPress (engl.)

    Thread-Starter Ernst Weinzettl

    (@ernstw)

    Lieber @pixolin, Ich sehe am Code leider gar nichts, glaube dir aber gerne.

    Ich habe auf meiner lokalen Testinstallation einige Beiträge mit Beitragsbildern erstellt. Im Betrag selbst ist das Featured Image ausgeblendet.

    Im Widget „Aktuelle Beiträge“ erscheinen die Beitragsbilder in der Übersicht als Thumbnails. Dort findet sich auf jeden Fall kein Link, auch keiner zum Beitrag.

    Wo liegt mein Denkfehler?

    Liebe Grüße Ernst

    Wenn du schreibst

    Es [das Beitragsbild] wurde gleich mit dem Beitrag verlinkt, konnte also in der Übersicht direkt angeklickt werden.

    gehe ich davon aus, dass die Darstellung auf der Startseite/Blog-Seite gemeint ist.

    Verwendest du für die Widgets den Block-Editor? Meinst du mit „Widget Aktuelle Beiträge“ den Block „Neueste Beiträge“? Bei der Ausgabe dieses Blocks spielt das Template für die Blog-Seite keine Rolle; der Block ist im WordPress-Core definiert. Du kannst aber in den Block-Einstellungen nicht nur angeben, dass ein Beitragsbild verwendet werden soll, sondern auch, ob das Beitragsbild mit der Einzelansicht des Beitrags verlinkt werden soll:

    Screenshot Einstellungen
    (zum Vergrößern anklicken)

    Ich sehe am Code leider gar nichts, glaube dir aber gerne.

    Dabei ist das doch gar nicht so schwer? Ich hab die Funktion mal etwas eingekürzt, damit sie besser verständlich wird:

    sprintf(
      '<a href="%1$s">%2$s</a>',
      get_permalink(),
      get_the_post_thumbnail( get_the_ID(), 'full' ),
    );

    sprintf ist eine PHP-Funktion, um Inhalte formatiert auszugeben. %1$s und %2$s sind Platzhalter für anschließend angegebene Werte. Die Funktion sagt also umgangssprachlich ausgedrückt:
    „Verlinke das Beitragsbild mit der URL des einzelnen Beitrags.“ – und darum ging es doch? 🙂

    Thread-Starter Ernst Weinzettl

    (@ernstw)

    Danke, danke, danke! Der Hinweis auf die Blockeinstellung hat sehr geholfen. Wieder ein Problem gelöst, über dem ich jetzt schon mehr als einen Tag sitze. Und so simpel auch noch!

    Noch sind nicht alle Hürden überwunden, aber ich komme einem Relaunch näher…

    Zum Login werde ich einen neuen Thread aufmachen, sollte ich es heute nicht endlich schaffen, (m)eine Lösung, die ich auch überblicken kann, zu finden.

    lG Ernst

    P.S.: @pixolin Sollte dir noch etwas zum Löschen eines Beitragsbildes (die werden bei mir alle so – also über den Rahmen hinunter die Links überlagernd – angezeigt, wie in meinem Beitrag weiter oben bebildert) einfallen, würde mich das freuen. Nachdem aber das Kernproblem gelöst ist, markiere ich den Thread dahingehend.

Ansicht von 14 Antworten - 1 bis 14 (von insgesamt 14)
  • Das Thema „GeneratePress – erstes Bild eines Beitrags als Beitragsbild verwenden“ ist für neue Antworten geschlossen.