Beitragsbild in der Übersicht direkt verlinken?

  • Hallo,

    bei mir kommt es manchmal vor das eine Fotoserie, nur ein einziges Foto beinhaltet. Ich würde gerne vereinzelte Beiträge die nur ein einziges Fotos haben, direkt auf die Mediendatei verlinken.

    Ist dies möglich?

    Als Beispiel: Dieser Beitrag hat nur ein Foto in der Galerie:
    https://eyespeak.de/category/get-dark/

    Dieses würde ich gerne direkt aus der Übersicht aus aufrufen, und nicht vorher auf diesen Link zu kommen:
    https://eyespeak.de/heinrich/

    Ist das möglich?

    eyespeak.de | In Wirklichkeit ist die Realität ganz anders |

    • Anzeige

    Hallo!

    Wenn du gerade an deiner Website arbeitest oder dein aktuelles Hosting überdenkst: Wir betreiben mit NetzLiving eine Hosting-Plattform, die speziell auf Performance, Sicherheit und einfache Verwaltung ausgelegt ist.

    • ✔️ Schnelle Ladezeiten (optimiert für WordPress & Co.)
    • ✔️ Deutsche Server & DSGVO-konform
    • ✔️ Persönlicher Support (kein 0815-Ticket-System)

    Mehr erfahren

  • Du zählst im Loop die Anzahl von Attachments zu einem Post.
    ZB so:

    Code
    global $post;
    $page_id = $post->ID;
    $all_attachments = get_posts( array( 'post_type' => 'attachment','post_mime_type' => 'image', 'post_parent' => $page_id, 'post_status'=>'published',  'numberposts' => -1 ) );
    
    
    $no_of_photos = count($all_attachments); // Gets the number of photo's attached in $no_of_photos variable

    Wenn $no_of_photos=1, gibst Du die URL zum Foto aus, wenn nicht, die zum Post. Hierzu musst Du in den Loop eingreifen ;)

  • In das Template, welches Deinen Loop für diesen Post-Typ erzeugt, also die Bilder auf der Seite darstellt. Erkennst Du meist an der while-Schleife. Schließender Befehl ist oft endwhile. Je nach Theme kann es aber sein, dass etwas genutzt wird wie

    Code
    get_template_part( 'template-parts/content' );

    Muss man schauen, wo genau das passiert, am besten in einem Child-Theme. Sorry.

  • Dein Loop befindet sich in der preview.php.
    Diese Code

    PHP
    <article <?php post_class( 'preview preview-' . get_post_type() . ' do-spot' ); ?> id="post-<?php the_ID(); ?>">
    <?php global $post;
    echo $post->ID;
    ?>
        <div class="preview-wrapper">

    gibt über dem Bild/Vorschau des Posts die ID des Post aus :-)

  • Okey, nun weiß ich aber nicht was ich genau machen soll.

    Vielleicht nochmals:
    Ich möchte nur bei einzelnen Beiträgen das Beitragsbild direkt verlinken. Also ein Klick auf das Beitragsbild soll es direkt öffnen anstatt es auf die Post-URL zu gehen.

    eyespeak.de | In Wirklichkeit ist die Realität ganz anders |

  • Jetzt muss Du für die Post ID alle Bilder im Post finden, zb mit einem Regex über den Post Content.

    Code
    $content = $post->post_content;
        $regex = '/src="([^"]*)"/';
        preg_match_all( $regex, $content, $matches );

    Und dann zählst Du die gefundenen Matches. Und wenn es nur 1 Bild gibt, änderst Du die URL, auf die the_permalink() zeigt, in die URL des Bildes.

    Füge oben noch hinzu

    Code
    var_dump($matches[0]);

    Du wirst sehen, dass er Dir ein Array ausgibt mit der URL der im Post enthaltenen Bilder. Und dieses Array zählst Du dann.

    2 Mal editiert, zuletzt von Azrael_0815 (15. Januar 2019 um 12:58)

  • In die preview.php, unter global $post.

    PHP
    <article <?php post_class( 'preview preview-' . get_post_type() . ' do-spot' ); ?> id="post-<?php the_ID(); ?>">
    <?php global $post;
    //Hier hinposten
    ?>
  • In die preview.php, unter global $post.


    In der ist das doch gar nicht zu finden ...

    Korrektur:

    <article <?php post_class( 'preview preview-' . get_post_type() . ' do-spot' ); ?> id="post-<?php the_ID(); ?>">

    Sehe ich.
    Was genau bitte jetzt wo hin.

    eyespeak.de | In Wirklichkeit ist die Realität ganz anders |

  • Unter

    PHP
    <article <?php post_class( 'preview preview-' . get_post_type() . ' do-spot' ); ?> id="post-<?php the_ID(); ?>">

    einfügen

    PHP
    <?php
    global $post;
    //HIER GEWÜNSCHTEN CODE EINFÜGEN
    ?>
  • Hmm, also wenn ich nun folgendes unter der ersten Zeile der preview.php einfüge ...

    PHP
    <?php
    global $post;
    
    
    $content = $post->post_content;
        $regex = '/src="([^"]*)"/';
        preg_match_all( $regex, $content, $matches );
        var_dump($matches[0]);
    ?>

    bekomme ich zwar ein "Array [...]" über den Fotos, aber der Post geht dennoch ganz normal auf.

    Bitte Rücksicht nehmen, auf Menschen die nicht ganz fit sind im Code lesen :-)

    eyespeak.de | In Wirklichkeit ist die Realität ganz anders |

  • Soll ja auch ganz normal aufgehen. Soll Dir nur zeigen, das man damit Bilder im Post "zählen" kann.

    Änder das mal so:

    Code
    //var_dump($matches[0]);
    $bilder_post=count($matches[0]);
    echo "Es sind ".$bilder_post." in diesem Beitrag.";

    Stimmt die Zählung?

    Einmal editiert, zuletzt von Azrael_0815 (15. Januar 2019 um 16:20)

  • Könntest du bitte den ganzen Code Posten um Verwirrung zu vermeiden?

    Gibt mir ein "Es sind 0 in diesem Beitrag." über den Previews aus.

    eyespeak.de | In Wirklichkeit ist die Realität ganz anders |

  • Wahrscheinlich suchst Du prinzipiell eher sowas wie das hier für die functions.php


    Ungetestet, evtl. noch ein kleiner Timeout nötig...

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!