• 郧西男孩两条腿“长”在一起 十堰市人民医院手术整形帮他迈开双腿 2019-08-09
  • 人民体育《大咖说》:破风骑行董事长董超谈自行车运动现状 2019-08-09
  • 男子回家听到狗叫,眼前这幕却让他无比吃惊 2019-08-07
  • 公安部严查制售高科技作弊专用器材犯罪 2019-08-06
  • 数十年月球温度上升谜团解开:都是美国惹的祸 2019-08-05
  • 歪歪楼视频来了 重庆百米高楼歪而不倒 2019-07-31
  • 中国人民健康保险股份有限公司获第十二届人民企业社会责任奖年度企业奖 2019-07-31
  • 银川:“互联网+政务”加速“放管服”改革 2019-07-30
  • 以习近平人才思想为指导建设企业人才高地 2019-07-29
  • 长城新媒体集团基本情况简介 2019-07-26
  • 人民企业社会责任奖评选往期回顾 2019-07-26
  • 在最美的季节,遇见最美的新疆 2019-07-14
  • 回复@老老保老张工:伪高工不仅智力低下,知识也很匮乏也!连啥叫计划经济都没搞懂! 2019-07-14
  • 中国将实施最严格机动车环境监管制度 2019-07-11
  • [安徽新闻联播]安徽与中央企业签下1800多亿元合作大单 2019-07-11
  • 江苏快三走势图:舟山做网站:WP_Query简介

    舟山网站建设 | 2019-04-03

    江苏快三一定牛走势图 www.rtqz.net 即使您认为您以前从未使用过WP_Query,但每次您在WordPress中加载页面时都会使用WP_Query。最简单地说,WordPress是如何工作的,当您加载一个页面时,它会创建一个WP_Query对象,该对象可以访问当前URL所调用的POST或POST,即前10个帖子,或1个特定的帖子,或一个类别中的前10个帖子,等等。这允许主题的模板文件中的函数,如_post()和_content()输出正确的POST或正确的POST内容。

    它的工作原理现在并不重要。重要的是你知道这是怎么回事。这很重要,因为它导致了一个问题:“嗨,乔希,如果我想收集我自己的帖子,也许所有的帖子都有两个特定的标签?或者如何显示按自定义字段排序的自定义POST类型中的所有帖子?“对于一个成长中的WordPress开发者来说,这是一个非常自然的问题。答案是您需要学习如何构造和使用您自己的WP_Query对象。

    请注意,舟山做网站虽然我将要讨论的不是特别高级,但它不是最初学者友好的话题。在本文中,我假设您熟悉标准WordPress循环,您可以轻松地打开主题或子主题,并对其中的PHP代码做一些更改。

    你说的这个“物体”是什么?

    正如您在前两段中可能注意到的,我一直在引用WP_Query对象。这是因为当您使用WP_Query时,您使用的是所谓的面向对象的PHP。大多数人,包括我自己,在开始使用WP_Query时甚至没有意识到这一点。
    将WP_Query对象看作是专门为您需要的帖子构建的容器,以及一些有用的方法-在容器中的函数-用于处理它们。例如,在普通WordPress循环中,我们开始循环如下:

    <pre><?php while ( have_posts() ) : the_post(); ?>

    在使用WP_Query时,我们开始如下所示的循环:

    <?php while ( $query->have_posts() ) : $query->the_post(); ?>

    为什么?因为我们需要来自特定WP_Query对象的帖子,在本例中,它存储在变量$query中。

    构建WP_Query对象

    舟山做网站正如我已经解释过的,WP_Query对象是非常特定的帖子的容器。当我们构建对象时,我们指定了一个参数列表,以便WordPress用于构建我们的查询。然后,我们将对象存储在一个变量中,这样我们就可以尽可能多地使用它。

    WP_Query的代码索引页上有一长串可接受的参数。在这篇文章中,我不能教您所有这些内容,相反,我的目标是让您能够轻松地处理文档中看到的内容。

    下面是一个基本的例子,我们要求所有贴着“天行者”和“绝地”标签的帖子:

    $args = array(
    	'tag' => 'skywalker',
    	'category' => 'jedi',
    );
    $query = new WP_Query( $args );

    为了把我刚才给你们看的,我们所做的,在一系列的争论中进行分解,我对WordPress说:“我想要贴上‘天行者’和‘绝地’这个标签的帖子?!比缓?,我们使用这个参数数组,存储在变量$args中,并使用它创建一个新的WP_query对象,并将该对象存储在变量$query中。

    我们可以期待这个查询返回像卢克天行者和阿纳金天行者这样标题的帖子。

    用WP_Query循环

    仅仅有一个WP_Query对象本身并不特别有用。事实上,我们可以循环遍历它包含的帖子,这使得它成为一个有用的东西。循环遍历WP_Query对象与使用常规WordPress循环非常相似。区别在于,我们必须在WP_Query对象的上下文中这样做。下面是一个基于最后一节的示例:

    <?php
    $args = array(
    	'tag' => 'skywalker',
    	'category' => 'jedi',
    );
    $query = new WP_Query( $args );
    ?>
    <?php if ( $query->have_posts() ) : ?>
    	<?php while ( $query->have_posts() ) : $query->the_post(); ?>
    		<h2><?php the_title(); ?></h2>
    		<?php echo the_content(); ?>
    
    	<?php endwhile; ?>
    <?php endif; ?>
    <?php wp_reset_postdata(); ?>

    让我们回顾一下我们刚才所做的。第一步是构建WP_Query对象并将其存储在$Query中。我们已经讨论过它的工作原理和原因了。下一步是检查查询是否返回任何帖子。我们使用$query->had_post()来实现这一点,这样WordPress就可以检查WP_Query对象中的POST,而不是WordPress在加载POST时自动构建的主要WP_Query对象。

    然后,我们使用您习惯于在主题中看到的循环系统进入单独的帖子,但我们需要在当前对象的上下文中这样做,所以我们再次使用当前对象,后面跟着箭头操作符(->)和方法的名称-类中的函数-我们想要使用的。在循环内部,一切都像往常一样工作。我们不需要对诸如_title()或_content()这样的函数做任何特殊的事情。

    我们以我们一贯的方式结束循环,但之后是额外的一步。这是使用wp_reet_postdata()告诉WordPress重新设置自身。这个步骤不会影响后续的循环,但是如果我们跳过这个步骤,它可能会导致其他WP_Query对象,例如您的小部件中的对象的行为异常。因此,用重置结束WP_Query循环非常重要。

    何时及何处使用WP_Query

    知道什么时候使用WP_Query是很重要的,并且要确保您没有重新创建WordPress已经为您做的事情。例如,如果您想要一个按特定作者列出所有帖子的页面,则不希望使用WP_Query。WordPress已经有了作者存档页面。

    另一方面,如果您希望您的首页模板(Front-page.php)有两个自定义循环,该怎么办?这将是WP_Query的一个很好的用途。假设您想在您的头版上显示投资组合自定义帖子类型中的三篇最新文章,然后是上个月发布的评论最多的三篇文章。这两种方法都是WP_Query的极好用途。最后,我将向您展示如何做到这一点,因为它们是关于如何使用WP_Query的极好的实用示例。

    显示来自定义邮政类型的帖子

    几周前,我在这里写了一篇关于使用Jetpack提供的新组合自定义POST类型的文章。让我向您展示如何输出到该POST类型中的三个最新文章的链接,即所谓的jetpack-Portfolio。首先,我们需要以特定的POST类型构建一个WP_Query对象,仅限于最近的三个帖子。这些论点就是这样的:

    $args = array(
    	'post_type' => 'jetpack-portfolio',
    	'posts_per_page'        => '3',
    	'paged'			=> '1',
    );
    $query = new WP_Query( $args );

    我们舟山做网站在这里所做的就是告诉WordPress,我想要一个特定的帖子类型的文章,我希望他们组织成3组-这是‘post_per_page’的论点-我只想要第一个“页面”或一组帖子-这是‘分页’的论点。

    现在,我们可以构建一个循环来创建链接,使用存储在$Query中的对象,如下所示:

    <?php if ( $query->have_posts() ) : ?>
    <h1>Recent Portfolio Items</h1>
    	<?php while ( $query->have_posts() ) : $query->the_post(); ?>
    		<h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
    	<?php endwhile; ?>
    <?php endif; ?>
    <?php wp_reset_postdata(); ?>

    请注意,我将项目组合帖子的标题放在检查中,以查看我们是否有帖子。这样,如果没有组合文章,标题就不会输出,后面不会显示任何内容,这看起来很有趣,如果您想要像在常规WordPress循环中一样从Portfolio文章中添加POST缩略图,您可以使用_POST_SCHEMEP()。在循环中使用标记,并使其成为您自己的。

    显示评论最多的帖子

    现在,在最后一个例子中,让我们展示上个月评论最多的帖子。这个查询参数的后半部分非常类似于上一个示例中的参数,但我们添加了参数,以便根据POST的注释数量排序这些帖子。

    使这个参数数组更加复杂的是,我们添加了一个日期查询。这样,我们把帖子限制在上个月。您可以跳过日期查询,以显示任何时候对帖子评论最多的帖子。日期查询实际上非常简单,因为参数非常容易读。正如你在下面看到的,我们要求在一个月前和今天之前创建的帖子。通过将参数“包含”设置为true,返回日期为今天或确切一个月前的帖子。如果我们把它设为假的话,我们将从今天起错过帖子,这是毫无意义的:

    $args = array(
    	'date_query'          => array(
    		'after' => '1 month ago',
    		'before' => 'today',
    		'inclusive'         => true,
    	),
    	'orderby' 		=> 'comment_count',
    	'order'	 		=> 'DESC',
    	'posts_per_page'        => '3',
    	'paged'			=> '1',
    );
    $query = new WP_Query($args);

    我将把输出留给您处理,因为您应该知道如何使用WP_Query对象。

    我想提到的一件事是,如果您一个接一个地使用这两个查询,那么将第二个查询存储在与第一个查询名称相同的变量中将破坏原始查询对象,并将其替换为新查询对象。如果您完成了第一个对象,这是一件好事,因为它清除了服务器的内存。如果需要保留以后要使用的第一个对象,则可以将第二个对象存储在一个不同名称的变量中。

    质疑

    舟山做网站希望本文有助于为您打开WP_Query的奇妙世界,并使您更容易阅读WP_Query代码索引页面或阅读其他使用WP_Query实现特定目标的文章或教程。如果您想定制WordPress的行为以实现网站设计所要求的特定目标,了解WP_Query的工作方式非常重要。


    上一篇:没有了下一篇:舟山专业网站设计:为你的客户推荐WordPress和Squarecace