Support » Allgemeine Fragen » Posts von anderen Seiten anzeigen

  • Hallo,
    ich möchte Beiträge, die von einer anderen WordPress-Seite stammen, auf der Seite mit allen Artikeln mit anzeigen. Zur Zeit habe ich das mithilfe der WordPress API gelöst, mit der auf einer Extra-Seite die Beiträge abgefragt werden und dann auf die Seite verlinken. Allerdings möchte ich die Beiträge eigentlich zwischen allen anderen stehen haben. Wie ist das möglich?

Ansicht von 5 Antworten - 1 bis 5 (von insgesamt 5)
  • Dafür könntest du ein neues Template erstellen (z.B. page-buntes.php für eine Seite „Buntes“), die

    1. … eine Query mit dem Abruf der ersten x Beiträge sowie eine Loop zru Ausgabe enthält,
    2. deinen Code mit wp_remote_get(); und
    3. eine weitere Query mit dem Abruf von y Beiträgen und einem offset von x Beiträgen.(vgl. Pagination Parameters > Offset).

    Was ich auch schon öfters gesehen habe ist eine Loop mit einem Counter und einem if-statement:

    <?php 
     $count = 0; //Counter-Variable setzen
     while ( have_posts() ) : the_post(); 
     $count++; //Counter mit jedem Durchlauf um 1 erhöhen
     if ( $count == 3 ) {
        // Code für Abruf fremder Webseiten
     }
     endwhile;
     ?>
    Thread-Starter Silas_229

    (@silas2209)

    Zurzeit habe ich folgenden Code in der content.php:

    <?php if (is_category('Website')) {
    	$posts = json_decode(file_get_contents('https://website.de/wp-json/wp/v2/posts?[per_page]=10'));
    	foreach ($posts as $p) {
    		$cat= array();
    		$cats = json_decode(file_get_contents('https://website.de/wp-json/wp/v2/categories?post='.$p->id));
    		foreach ($cats as $c) {
    			$cat[] = sprintf('<a href="%2$s" rel="category tag">%1$s</a></span>', $c->name, $c->link);
    		}
    		$categories = implode($cat, ', ');
    		unset($cat);
    		echo sprintf('<article id="post-%1$s" class="post-%1$s post type-post status-publish format-standard has-post-thumbnail hentry">
    			<header class="entry-header">
    				<div class="entry-meta">
    					<span class="posted-on"><time class="entry-date published" datetime="%2$s">%3$s</time></span>
    				</div>
    				<h2 class="entry-title"><a href="%4$s" rel="bookmark" target="_blank">%5$s</a></h2>
    			</header><!-- .entry-header -->
    			' . ($p->featured_media ? '<a class="post-thumbnail" href="%4$s" aria-hidden="true" tabindex="-1" target="_blank">
    				<img width="1200" height="1600" src="https://website.de.de/?p=%6$s" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="%5$s" srcset="https://website.de/?p=%6$s 1200w, https://website.de/?p=%6$s 225w, https://jf.feuerwehr-othfresen.de/?p=%6$s 768w" sizes="(max-width: 1200px) 100vw, 1200px" />
    			</a>' : '') . '
    			<div class="entry-content">
    				' . $p->excerpt->rendered . '
    				<p> <a href="%4$s#more-%1$s" class="more-link no-before">Weiterlesen<span class="screen-reader-text" target="_blank"> „%5$s“</span></a></p>
    			</div><!-- .entry-content -->
    			<footer class="entry-footer">
    				<span class="cat-links">Kategorien: ' . $categories . '
    			</footer><!-- .entry-footer -->
    		</article><!-- #post-%1$s -->',
    		$p->id,
    		$p->date,
    		date('d. m. Y', strtotime($p->date)),
    		$p->link,
    		$p->title->rendered,
    		$p->featured_media
    		);
    	}
    	echo '<a href="https://website.de" target="_blank" class="btn btn-large">Zu Website.de</a>';
    } else {
    // Normaler Content
    }
    ?>

    Das funktioniert soweit auch, allerdings ist das schon sehr umständlich und unschön. Aber warum soll ich gerade bei $count == 3 die andere Website abrufen

    Irgendwie reden wir aneinander vorbei.

    ich möchte Beiträge, die von einer anderen WordPress-Seite stammen, auf der Seite mit allen Artikeln mit anzeigen.

    Dazu habe ich dir geschrieben, dass du ein eigenes Template erstellen kannst, in dem zuerst eine vorgegebene Anzahl Beiträge ausgegeben wird, dann mit deinem Code die Beiträge einer anderen Website, dann die nächsten Beiträge deiner eigenen Website. (Dass du dazu nicht wp_remote_get(); verwendest, sondern die Inhalte per REST API einbindest, war mir nicht bekannt. Sicher eine gute Lösung.)

    Aber warum soll ich gerade bei $count == 3 die andere Website abrufen

    Das war nur ein Beispiel.

    Du hattest geschrieben „Allerdings möchte ich die Beiträge eigentlich zwischen allen anderen stehen haben.“

    Dazu habe ich mit einem Code-Beispiel geantwortet. Es können auch 4 oder 2 oder 17 Beiträge sein, die oberhalb der Beiträge der anderen Website erscheinen.

    Thread-Starter Silas_229

    (@silas2209)

    Hallo,
    die Beiträge sollen chronologisch richtig angeordnet sein, und am Besten auch auf allen Seiten, wie Suche, Archive, etc. auftauchen. Wie, als wären sie ganz normale andere Beiträge. Bei meiner Lösung ist mir allerdings aufgefallen, dass die Seite ziemlich lange lädt. Kann man die Beiträge vielleicht per Cronjob o. Ä. importieren, aber im Backend verhindern, dass sie angezeigt/bearbeitet werden können? Das wäre denke ich eine deutlich elegantere Lösung.

    Ich hatte deine ursprüngliche Frage anders verstanden.
    Da kann ich dir nicht weiterhelfen.

Ansicht von 5 Antworten - 1 bis 5 (von insgesamt 5)
  • Das Thema „Posts von anderen Seiten anzeigen“ ist für neue Antworten geschlossen.