Einen Beitrag in einen anderen Beitrag inkludieren

  • (Wie) ist es möglich, einen Post bzw. einzelne Elemente eines Posts B (Titel, Content, benutzerdef. Felder) innerhalb eines anderen Posts A anzuzeigen? (Wie) könnte eine Verknüpfung der beiden Posts erfolgen?

    • 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

  • Dank des feinen Tutorials auf der Website von Jeriko habe ich nun eine Lösung für mein Problem gefunden. Um beispielsweise den Titel und Inhalt des Posts mit der ID70 in einem anderen Post anzeigen zu lassen, habe ich in der single.php folgenden Code eingefügt

    PHP
    <?php $order = "70"; 
    $myposts = $wpdb->get_results("SELECT * FROM $wpdb->posts WHERE ID IN ($order) ORDER BY FIELD(ID, $order)"); ?>
    <?php if($myposts) : foreach($myposts as $post) : setup_postdata($post); ?>
    <h3><?php the_title(); ?></h3>
    <?php the_content(); ?>
    <?php endforeach; endif; ?>

    Klappt wunderbar. Nun werde ich noch die ID des zu inkludierenden Posts als benutzerdefiniertes Feld im anderen Post anlegen, um die beiden Posts einfach verknüpfen zu können.

    Vielen Dank an Jeriko!

  • Ein Problem habe ich jedoch noch: Wie kann ich nun die benutzerdefinierten Felder im post B ansprechen? <?php the_title(); ?> gibt mir im oben genannten Code wunderbar den Titel des eingebundenen posts zurück, wenn ich aber versuche, das benutzerdefinierte Feld 'testfeld' mittles <?php echo c2c_get_custom('testfeld'); ?> anzusprechen, bekomme ich nicht den testfeld-Wert von post B, sondern den von post A zurück ...

    PHP
    <?php $order = "70"; 
    $myposts = $wpdb->get_results("SELECT * FROM $wpdb->posts WHERE ID IN ($order) ORDER BY FIELD(ID, $order)"); ?>
    <?php if($myposts) : foreach($myposts as $post) : setup_postdata($post); ?>
    <h3><?php the_title(); ?></h3>
    <?php the_content(); ?>
    <?php echo c2c_get_custom('testfeld'); ?>
    <?php endforeach; endif; ?>

    Bei "c2c_get_custom" handelt es sich um ein Plugin, mit dem ich bisher die Feldwerte abgefragt habe; liegt's vielleicht daran und gibt es Alternativen?

    UPDATE: Leider funktioniert der oben genannte Code doch nicht optimal, da sich nach der Abfrage alle übrigen Felder wie the_content, the_title etc. immer auf post B beziehen und nicht mehr auf post A .. es ist also offenbar leider nicht möglich, nach der obigen Abfrage wieder in den ursprünglichen Loop zurückzukehren und Werte des ursprünglichen Posts abzufragen ... Wie könnte man das lösen?

    Einmal editiert, zuletzt von Zuperfly (6. November 2006 um 16:22)

  • Hier ein Lösungsvorschlag aus dem WordPress.org-Support-Forum:

    Zitat


    You're going to have to nix the various Loop-based template tags for your endeavor here. But first, you can collect the post this way:

    PHP
    <?php $post_B = new WP_Query('p=70'); ?>

    Then to display various bits of the post, you can echo the 'post' properties in $post_B:

    PHP
    <h3><?php echo apply_filters('the_title', $post_B->post->post_title); ?></h3>
    <?php echo apply_filters('the_content', $post_B->post->post_content); ?>

    Note how I've passed them through the apply_filters() function (with the appropriate hook) to make sure all the usual formatting, etc occurs. But you can bypass this if you don't need it:

    PHP
    <h3><?php echo $post_B->post->post_title; ?></h3>
    <?php echo $post_B->post->post_content; ?>

    Funktioniert einwandfrei.

Jetzt mitmachen!

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