你未必知道的query_posts使用技巧

你未必知道的query_posts使用技巧

  •  到期时间:
  •  到期时间:
  •  到期时间:
  •  到期时间:
  •  到期时间:
  •  到期时间:
  •  到期时间:
  •  到期时间:
  •  到期时间:
  • 你未必知道的query_posts使用技巧插图
    Query_posts语句是wordpress最实用的语句之一。
    正是在query_posts的作用下,wordpress的Loop循环才能够调用并显示所有文章内容。
    Query_posts的魅力在于,它可以根据你的要求,通过各种各样的方式灵活地检索并过滤日志或页面。
    你可以用query_posts进行简单的文章抓取,可以只抓取一篇,也可以抓取上百篇。
    而说到复杂点的用法,你甚至可以利用query_posts来查询某一分类目录下某个作者发表的、带有某个标签的特定数量文章….
    wordpress中文手册上有对query_posts函数的介绍,不过下面要介绍的是一些更详细更有趣的用法。

    1.注意事项

    首先要注意的是,使用query_posts的最好方法….就是不要用它。

    Query_posts中说到: query_posts函数仅用于修改主页循环(Loop),而不是一种在页面上生成次级循环的手段。

    如果你希望在主循环外另外生成循环,应该新建独立的WP_Query对象,用这些对象生成循环。

    在主循环外的循环上使用query_posts会导致主循环运行偏差,并可能在页面上显示出你不希望看到的内容。
    最恰当的方法是使用query查询类。

    <?PHP
        $query = ‘posts_per_page=10’;
        $queryObject = new WP_Query($query);
    // The Loop…
     if ($queryObject->have_posts()){ 
         while ($queryObject->have_posts()){ 
            $queryObject->the_post(); the_title(); the_content();
      } 
     } 
    ?>

    2. 不同调用方法
    传统的文章调用方法是以查询字符串形式传递query_posts参数(如variable1=value1&variable2=value2&…),不过后来有了新方法——用数组来设置查询参数。

    <?PHP
    // GOOD
    // select 10 posts from category 1
    $query = ‘posts_per_page=10&cat=1’;
    $queryObject = new WP_Query($query);
    // The Loop…
    // BETTER
    $query = array ( ‘posts_per_page’ => 10,’cat’ => 1 );
    $queryObject = new WP_Query($query);
    // The Loop…
    ?>

    当然,使用哪种方法完全由个人习惯决定,不过我认为用数组更为方便,原因如下:

    便于阅读
    可以利用if语句更轻松地给数组添加条件,以动态生成查询
    一些查询参数(某些使用频率较低的参数,如分类参数和标签参数)需要被传递数组
    你可以将函数调用以参数的形式传递

    3. 关于日志顺序

    默认情况下wordpress日志是按日期顺序排列的,这也是大多数人的需求,不过如果能更改默认的排列顺序那就更好了。 例如你可以随意调用几篇日志,让它们显示在侧边栏。 wordpress 2.9引入了以评论的数量多寡给文章排序的功能,这样就可以更方便地向访客显示最受欢迎的文章….不过这里为了使用query_posts,我们假设一下不使用wordpress的这个功能。

    <?PHP
    // select posts ordered by comment_count
    $query = ‘orderby=comment_count’;
    $queryObject = new WP_Query($query);
    // The Loop…
    ?>

    4. Meta值

    Post Meta函数的实用性也很强, 我们可以利用下面的代码来显示最受欢迎的文章:

    <?PHP
    // grab posts by post count ordered in descending order
    (most votes first)
    $query = ‘Meta_key=vote_count&orderby=Meta_value&order=DESC’;
    $queryObject = new WP_Query($query);
    // The Loop…
    ?>

    5. 日志? 页面? 附件?

    你可以按文章类型调用自己想要的日志、页面或附件。 对附件的调用可能是最有趣但同时被使用频率也是最低的一个。 利用下面的代码(与上文中提到的顺序参数),你就可以根据自己的喜好在网站上显示各种媒体文件了:

    <?PHP
    // grab 1 random attachment
    $query = ‘post_type=attachment&orderby=rand&posts_per_page=1’;
    $queryObject = new WP_Query($query);
    // The Loop…
    ?>
    分享到 :
    相关推荐

    发表评论

    登录... 后才能评论