Holen Sie sich die Seitenzahl mit unendlichem Scroll

Ich habe mit diesem Tutorial die unendliche Scroll-Unterstützung des Jetpack-Plugins zu meinem eigenen Thema hinzugefügt:

add_theme_support( 'infinite-scroll', array( 'container' => 'content', 'footer' => false, 'render' => 'vividflow_infscroll_render', 'wrapper' => 'post_summaries', 'posts_per_page' => 12, 'type' => 'scroll' ) ); 

Jetzt brauche ich etwas wie einen Zähler, der jedes Mal erhöht, wenn zusätzliche Beiträge geladen werden.

Ich weiß, dass die neuen Posts in einer infinite-view- n class platziert sind und ich eine JavaScript-function habe, die ich für diese neue geladene class aufrufen möchte:

 function setupPostSummaries(counter) { jQuery('.infinite-view-'+counter).doSomething(); } 

Also ich denke, ich brauche eine PHP-Variable in der unendlichen Scroll-Render-function oder die Schleife, die jedes Mal erhöht, wenn zusätzliche Beiträge geladen werden. Dann kann ich am Ende von The Loop tun:

 setupPostSummaries(); 

Ist eine solche Variable schon da? Oder gibt es einen anderen Weg, um mein Ziel zu erreichen?

Solutions Collecting From Web of "Holen Sie sich die Seitenzahl mit unendlichem Scroll"

Ergreifung der Werte

Normalerweise greifen Sie nur auf das $wp_query Objekt zu oder, falls Sie eine benutzerdefinierte Abfrage wie $my_query = new WP_Query(); , das $my_query Objekt. Von dort können Sie die $wp_query->numberposts (oder besser, als nicht veraltet: $wp_query->found_posts ) für die gesamte Anzahl der Posts und $wp_query->posts_per_page für die Anzahl der Posts pro Seite erhalten.

In einem Plugin

Schreib einfach ein kleines Plugin, um diesen Job für dich zu erledigen:

 < ?php /* Plugin Name: Infinite Scroll Counter Script */ add_action( 'wp_enqueue_scripts', 'wpse88834_add_script' ); function wpse88834_add_script() { wp_enqueue_script( 'wpse_counter', plugin_dir_url( __FILE__ ).'js/counter.js', array( 'jquery' ), // the infinte scroll script should also be added as dependency filemtime( plugin_dir_path( __FILE__ ).'js/counter.js' ), true ); wp_localize_script( 'wpse_counter', 'wpse_counter_obj', array( 'numberposts' => $GLOBALS['wp_query']->numberposts, 'found_posts' => $GLOBALS['wp_query']->found_posts, 'posts_per_page' => $GLOBALS['wp_query']->posts_per_page, ) ); } 

Wenn Sie dann in Ihrem Skript sind, können Sie dort problemlos auf Ihre Daten zugreifen

 /* Inside ~/js/counter.js */ jQuery( document ).ready( function($) { /* wpse_counter_obj.numberposts */ wpse_counter_obj.found_posts wpse_counter_obj.posts_per_page // Current var post_count_curr = 0; post_count_curr += wpse_counter_obj.found_posts; console.log( post_count_curr ); } ); 

Jetzt müssen Sie dem unendlichen Bildlauf nur noch einen Ereignis-Listener hinzufügen und den Zähler erhöhen.

Ich bin auf dasselbe Problem gestoßen und habe Folgendes verwendet, um die Seitennummer zu erhalten:

 $curPage = (get_query_var('paged') ? get_query_var('paged') : 1) + 1; 

Ich kann nicht sagen, warum es bei einer benutzerdefinierten WP_Query um eins geht, aber es ist in Ordnung, wenn ich es nicht tue – das könnte etwas sein, das spezifisch für das Thema ist, das ich anpasse. Dieser Wert erhöht sich jedoch bei jedem Aufruf.

Eine Lösung für das Problem, nur den letzten Satz von Posts zu beeinflussen, aber nicht die Frage , eine ‘Seitenzahl’ zu erhalten, ist hier:

Alle neuen Posts werden in ein div mit class post_summaries . Sie können Ihre JavaScript-function so bearbeiten, dass sie nur das letzte Element mit diesem Code betrifft:

 function setupPostSummaries() { jQuery('.post_summaries').last().doSomething(); } 

Wie gesagt, triggers dies zwar das Problem, nicht aber die Frage.