問題描述
我使用 this tutorial 將 Jetpack 外掛的無限滾動支援新增到我自己的主題中:
add_theme_support( 'infinite-scroll', array(
'container' => 'content',
'footer' => false,
'render' => 'vividflow_infscroll_render',
'wrapper' => 'post_summaries',
'posts_per_page' => 12,
'type' => 'scroll'
) );
現在我需要像計數器這樣的東西,每次載入額外的帖子都會增加。
我知道新的帖子被放置在 infinite-view- n 類中,我有一個 JavaScript 函式,我想要呼叫這個新載入的類:
function setupPostSummaries(counter) {
jQuery('.infinite-view-'+counter).doSomething();
}
所以我想我需要一個 PHP 變數在無限滾動渲染功能或迴圈中增加每次額外的帖子被載入。然後我可以在迴圈結束時做:
<script type="text/javascript">setupPostSummaries(<?php the_counter(); ?>);</script>
這樣的變數已經有了嗎?還是有其他方式來實現我的目標?
最佳解決方案
抓住價值觀
通常,您只需訪問 $wp_query 物件,或者如果您做了像 $my_query = new WP_Query(); 的自定義查詢,則 $my_query 物件。從那裡你可以得到 $wp_query->numberposts(或更好的,作為 non-deprecated:$wp_query->found_posts) 的全部數量的帖子和 $wp_query->posts_per_page 每頁的帖子數量。
在外掛裡面
只要寫一個小外掛為你做這個工作:
<?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,
)
);
}
當您在指令碼中時,您可以輕鬆訪問您的資料
/* 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 );
} );
現在你只需要新增一個事件監聽器到無限滾動並遞增計數器。
次佳解決方案
我遇到同樣的問題,並使用以下內容獲取頁碼:
$curPage = (get_query_var('paged') ? get_query_var('paged') : 1) + 1;
我不能說為什麼它做一個定製的 WP_Query,但如果我不這樣做 – 它可能是一個特定於我自定義的主題的東西。但是,這個值對於每個呼叫都是遞增的。
參考文獻
注:本文內容整合自 Google/Baidu/Bing 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。