始终对不同的查询使用相同的数组

时间:2010-09-30 作者:Sergio Soares

我有一个函数可以返回一个数组os posts ID。

目前,每次我有疑问时,我都必须这样做:

$ids=agendados()
query\\u posts(数组(\'post\\u not\\u in\'=>$id);

是否有一种方法可以通过在标头上调用来维护数组。php和每次使用此数组a do a query\\u posts?

我认为在我的路上做这件事是一件充满疑问的事。。

谢谢你告诉我我的英语很差

www.zarpa.eu

3 个回复
最合适的回答,由SO网友:Dan Gayle 整理而成

我不喜欢为此使用类别,因为它们应该是语义术语。然而,我确实喜欢全局数组的想法。我不会直接创建新查询,而是通过将结果添加到全局数组并返回结果的函数对其进行过滤:

我将其添加到函数中。php:

function nt_globals($args){
    global $used;

    $defaults = array(
        \'post__not_in\' => $used,
        );
    $query = wp_parse_args( $args, $defaults );

    $queryObject = new WP_Query($query);

    foreach ($queryObject->posts as $item):
        $used[] = $item->ID;
    endforeach;

    return $queryObject;
}
然后,无论何时需要查询,我都会调用该函数:

$queryObject = nt_globals(\'posts_per_page=1\');

while ($queryObject->have_posts()):
    $queryObject->the_post();
    the_title();
endwhile; 

SO网友:EAMann

实际上,我会推荐一种不同的方法:

为这组帖子创建一个特殊类别(例如:“Not in Loop”)。那么,当你打电话的时候query_posts() 你可以exclude posts based on that category.

然而,如果你想坚持你原来的功能。。。将函数添加到wp_head 设置ID数组,然后在调用时将其作为全局变量引用query_posts():

function ignore_ids() {
    $ignore_ids = agendados();
}
add_action(\'wp_head\', \'ignore_ids\');
然后使用:

global $ignore_ids;
query_posts( array(\'post__not_in\' => $ignore_ids) );

SO网友:Sergio Soares

我做错了什么

代码如下:

函数agendados(){

global $wpdb;
$ids = array();
$todaysDate = date(\'Y-m-d H:i:s\');
$hoje = strtotime($todaysDate);

$query = "SELECT post_date, ID from $wpdb->posts WHERE post_status=\'publish\'";
$posts = $wpdb->get_results($query);

if ($posts):
    foreach ($posts as $post) {
        $data_post = $post->post_date;
        $str = strtotime($data_post);
        if ($str < $hoje) {
            $ids[] = $post->ID;
        }
    }
endif;
return $ids;
}
add\\u action(\'wp\\u head\',\'agendados\');

然后:

全球$ids;

$args = array (
\'post__not_in\' => $ids,
\'showposts\' => 30,
\'order\' => ASC,
);
global $post;
$posts = get_posts($args);
if ($posts) {
    foreach ($posts as $post) {
        setup_postdata($post);
        $data = get_the_date(\'Y-m-d\');
            echo $data;echo \'<br/>\';
        }       
}
$ids数组未包含任何内容:/

结束

相关推荐