Laden Sie mehr Beiträge Ajax Button in WordPress
Ich habe einen Blick durch die alten Fragen und versucht, viele der verschiedenen Methoden, dass es zu sein scheint, dies zu tun. Der nächste, den ich bekommen habe, zu arbeiten, ist dieser hier: Wie die Umsetzung der Paginierung auf ein benutzerdefiniertes WP_Query Ajax
Ich habe alles versucht und es wird einfach nicht funktionieren. Absolut ändert sich nichts auf der Seite. Wenn Sie überprüfen die Laden-Schaltfläche, und klicken Sie auf es, das jquery ist, dass die Last Mehr Taste Aktion, wie es die änderungen aus <a id="more_posts">Load More</a>
zu <a id="more_posts" disables="disabled">Load More</a>
die selbst das scheint nicht die richtige für mich sowieso. Es ist nicht das hinzufügen von posts, ich glaube, ich bin etwas fehlt einfach, aber für das Leben von mir ich kann nicht arbeiten, es out.
Den Code in Mein template-Datei ist:
<div id="ajax-posts" class="row">
<?php
$postsPerPage = 3;
$args = [
'post_type' => 'post',
'posts_per_page' => $postsPerPage,
'cat' => 1
];
$loop = new WP_Query($args);
while ($loop->have_posts()) : $loop->the_post(); ?>
<div class="small-12 large-4 columns">
<h1><?php the_title(); ?></h1>
<p><?php the_content(); ?></p>
</div>
<?php
endwhile;
echo '<a id="more_posts">Load More</a>';
wp_reset_postdata();
?>
</div>
Den Code in meine functions Datei ist:
function more_post_ajax(){
$offset = $_POST["offset"];
$ppp = $_POST["ppp"];
header("Content-Type: text/html");
$args = [
'suppress_filters' => true,
'post_type' => 'post',
'posts_per_page' => $ppp,
'cat' => 1,
'offset' => $offset,
];
$loop = new WP_Query($args);
while ($loop->have_posts()) { $loop->the_post();
the_content();
}
exit;
}
add_action('wp_ajax_nopriv_more_post_ajax', 'more_post_ajax');
add_action('wp_ajax_more_post_ajax', 'more_post_ajax');
Und Meine JQuery im footer:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>
<script type="text/javascript">
jQuery(document).ready( function($) {
var ajaxUrl = "<?php echo admin_url('admin-ajax.php')?>";
//What page we are on.
var page = 5;
//Post per page
var ppp = 3;
$("#more_posts").on("click", function() {
//When btn is pressed.
$("#more_posts").attr("disabled",true);
//Disable the button, temp.
$.post(ajaxUrl, {
action: "more_post_ajax",
offset: (page * ppp) + 1,
ppp: ppp
})
.success(function(posts) {
page++;
$("#ajax-posts").append(posts);
//CHANGE THIS!
$("#more_posts").attr("disabled", false);
});
});
});
</script>
Kann jemand sehen, was ich bin fehlt oder nicht in der Lage zu helfen?
InformationsquelleAutor der Frage Addzy | 2015-07-23
Du musst angemeldet sein, um einen Kommentar abzugeben.
UPDATE 24.04.2016.
Habe ich erstellt-tutorial auf meiner Seite https://madebydenis.com/ajax-load-posts-on-wordpress/ über die Umsetzung dieses auf Zwanzig Sechzehn Thema, so fühlen sich frei, check it out 🙂
BEARBEITEN
Ich habe getestet dieses auf Zwanzig Fünfzehn und schon funktioniert es, so sollte es sein, für Sie zu arbeiten.
In index.php (vorausgesetzt, dass Sie wollen, zeigen die Beiträge auf der Hauptseite, aber dies sollte funktionieren, auch wenn Sie es in einem page template) ich habe:
Dieser Ausgabe 3 Beiträge aus Kategorie 8 (ich hatte die posts in dieser Kategorie, so dass ich es benutzt habe, können Sie verwenden, was Sie wollen). Sie können auch die Abfrage der Rubrik, die Sie mit
Dadurch erhältst du die Kategorie-id in der Abfrage verwendet werden. Sie könnte diese in Ihrem Ladeprogramm (laden div), und ziehen Sie mit jQuery wie
Und ziehen die Kategorie mit
Aber für jetzt, lassen Sie diese aus.
Weiter in functions.php ich Hinzugefügt
Recht nach den vorhandenen
wp_localize_script
. Dieser lädt wordpress-eigenen admin-ajax.php so, dass wir es benutzen können, wenn wir nennen es in unserer ajax-call.Am Ende der functions.php die Datei habe ich noch die Funktion, die Last deines posts:
Habe ich hier Hinzugefügt ausgelagerten key im array, so dass die Schleife nachverfolgen können, auf welche Seite Sie sind, wenn Sie laden Ihre Beiträge.
Wenn Sie Hinzugefügt haben, Ihre Kategorie, in der loader, Sie würde hinzufügen:
Und statt 8, Sie würde
$cat
. Dies wird in der$_POST
array, und Sie werden in der Lage sein, um es in ajax.Letzte Teil ist der ajax selbst. In functions.js ich in der
$(document).ready();
UmgebungGespeichert, getestet, und es funktioniert 🙂
Bilder als Nachweis (nicht dagegen die schlampige styling, es war schnell gemacht). Auch Inhalte posten, ist Kauderwelsch xD
UPDATE
Für 'unendlich' Belastung statt auf click-Ereignis der Schaltfläche (nur machen Sie es unsichtbar, mit
visibility: hidden;
) können Sie versuchen, mitDiese ausgeführt werden sollten, die
load_posts()
Funktion, wenn Sie 100 Pixel vom unteren Rand der Seite. Bei dem tutorial auf meiner Website, die Sie hinzufügen können, eine Prüfung, um zu sehen, wenn die Beiträge geladen werden, (um zu verhindern, dass das brennen des ajax zweimal), und Sie können es Feuer, wenn die Rollen an der Spitze der FußzeileNun der einzige Nachteil in diesen Fällen ist, dass man nie scrollen Sie zu dem Wert der
$(document).height() - 100
oder$('footer').offset().top
aus irgendeinem Grund. Wenn das passieren sollte, erhöhen Sie einfach die Zahl, wo das scrollen geht.Können Sie leicht überprüfen, indem Sie
console.log
s in deinem code und sehen Sie im Bereich "Informationen" was werfen SieUnd nur entsprechend anpassen 😉
Hoffe, das hilft 🙂 Wenn Ihr noch Fragen habt einfach stellen.
InformationsquelleAutor der Antwort dingo_d