Dafür könntest du ein neues Template erstellen (z.B. page-buntes.php
für eine Seite „Buntes“), die
- … eine Query mit dem Abruf der ersten x Beiträge sowie eine Loop zru Ausgabe enthält,
- deinen Code mit
wp_remote_get();
und
- 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;
?>
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.
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.