PHP代码标题的效率

时间:2012-11-14 11:10:22

标签: php wordpress

这段代码不是最优的,我很难找到更好的方法。

基本上,您单击一个按钮,该按钮向下面列出的此文件发送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秒。有没有更有效,更快捷的方法呢?

1 个答案:

答案 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

PP:我不明白为什么你不只是在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