这段代码不是最优的,我很难找到更好的方法。
基本上,您单击一个按钮,该按钮向下面列出的此文件发送ajax请求,该文件从WordPress数据库中获取随机帖子。通常这些都是重复的,给人的印象是它不起作用,打击这个我检查当前id =旧id,如果它们是相同的获得一个新帖子,但是我还没有找到一种方法来运行另一个wpquery里面的另一个问题。
<?php
require_once('../../../wp-blog-header.php');
header('HTTP/1.1 200 OK');
?>
<span id="postss"><?php
query_posts(array(
'cat' => 39,
'order' => 'ASC', // ASC
'orderby' => 'rand',
'showposts' => 1,
));
$wp_query->is_archive = true; $wp_query->is_home = false;
if (have_posts()) : while (have_posts()) : the_post();
session_start();
if(!isset($_SESSION['oldId']))
{
$_SESSION['oldId'] = get_the_id();
}else{
$curId = get_the_id();
if($_SESSION['oldId'] == $curId)
{
header("Location: http://website.com/testimonialPull.php");
}else{
the_content();
}
$_SESSION['oldId'] = get_the_id();
}
endwhile; endif;
?>
因此,发送标题请求大约需要1秒钟才能显示新帖子,而通常大约需要2/10秒。有没有更有效,更快捷的方法呢?
答案 0 :(得分:0)
只需修改您的query_posts()
电话:
$args = array(
'cat' => 39,
'order' => 'ASC', // ASC
'orderby' => 'rand',
'showposts' => 1,
);
if ( isset( $_SESSION['oldId'] ) {
$args['post__not_in'] = array( $_SESSION['oldId'] );
}
query_posts( $args );
post__not_in
参数指定将从查询中排除的ID数组。
如果您想详细了解WP_Query
类及其接受的参数(与query_posts()
接受的参数匹配) - 请参阅codex页面 - Class Reference/WP Query。
init
动作钩子上挂钩一个函数并将查询发送到http://website.com/?pullTestimonial=1
(我不确定这是否会减慢过程,但这通常是我实现这一目标的方式)
以下是一个示例代码:
function fetch_testimonial() {
if ( isset( $_GET['pullTestimonial'] ) ) {
// Your code that will be executed goes here
exit;
}
}
add_action('init', 'fetch_testimonial', 10);
您从中获胜的原因是您不需要在根目录中的某个位置放置文件,或者您的链接不像http://website.com/wp-content/themes/mytheme/testimonialPull.php