我正在建立一个网站, 使用户能够使用wordpress发布文章(我建立了自己的主题)。并且在主页中, 用户将按用户查看其后的帖子(例如Twitter时间轴)。我使用基于jQuery的无限滚动来替代分页。
【以非管理员身份登录时未加载WordPress帖子( (自定义主题))】如果我以管理员身份登录, 一切都很好并且可以正常工作, 问题是当我以其他特权(例如作者)登录时。该页面将仅加载第一页。并且另一个页面将不会加载。
这是我在function.php中的代码:
//-----------------Infinite Scroll-------------------------------/*
* initial posts dispaly
*/
function script_load_more($args = array()) {
//initial posts load
echo '<
div id="ajax-primary" class="content-area">
';
echo '<
div id="ajax-content" class="content-area">
';
ajax_script_load_more($args);
echo '<
/div>
';
echo '<
center>
<
a href="http://www.srcmini.com/#" id="loadMore"data-page="1" data-url="'.admin_url("admin-ajax.php").'" >
<
/a>
<
/center>
';
echo '<
/div>
';
}/*
* create short code.
*/
add_shortcode('ajax_posts', 'script_load_more');
/*
* load more script call back
*/function ajax_script_load_more($args) {
//init ajax
$ajax = false;
//check ajax call or not
if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) &
&
strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
$ajax = true;
}global $wpdb;
$cekpost = $wpdb->
get_results ( "SELECT post_author FROM".$wpdb->
prefix."posts WHERE post_author = ".get_current_user_id()." AND post_status='publish'");
$result = $wpdb->
get_results ( "SELECT follow FROM".$wpdb->
prefix."follow WHERE user = ".get_current_user_id());
if (sizeof($cekpost)>
0 OR sizeof($result)>
0){//number of posts per page default
$num =5;
//page number
$paged = $_POST['page'] + 1;
$jumlah=count($result);
;
$i=0;
$following = get_current_user_id();
foreach ( $result as $hasil )
{
$i++;
//if ($i<
$jumlah){
$following=$following.", ".$hasil->
follow;
//$following=$following.", ";
//}
}//echo $following;
if ($following!=null){
echo "inside following".get_current_user_id();
//args
$args = array(
'post_type' =>
'post', //'author' =>
$following, 'post_status' =>
'publish', 'posts_per_page' =>
$num, 'paged'=>
$paged
);
//query
$query = new WP_Query($args);
//var_dump($query);
//check
if ($query->
have_posts()):
//loop articles
while ($query->
have_posts()): $query->
the_post();
include 'ajax-content.php';
//reset post data
wp_reset_postdata();
endwhile;
endif;
}
//check ajax call
if($ajax) die();
} else {
include_once "postuser.php";
}
}
#1你能否检查控制台中是否存在任何JS错误。可能是缓存或优化插件问题
#2然后我意识到问题是当我们在wordpress中调用ajax时, 它总是在is_admin上触发。因此, 无论你在哪里尝试使用Ajax, 它都始终像在管理员端一样应用。
推荐阅读
- WordPress(分层标签端点的问题)
- WordPress帖子-Ajax加载更多随机顺序,过滤器不起作用()
- WordPress PHP包装了一些文本,但没有其他文本()
- WordPress的帖子不显示内部图像
- WordPress /PHP(检查帖子是否仅在一个类别中)
- How to Resize Ramdisk space by HPDM
- #yyds干货盘点# 如何优雅的获取 Mac OS 系统 IP 地址()
- Linux引导过程与服务控制(完)
- 通过 Devstack 多节点安装 OpenStack