在循环中,WP_QUERY如何连接到WP_POST?

时间:2017-01-25 作者:john-thomas

这段代码很有效,我想知道为什么。

所以我从WP_Query 类,并使用have_posts()the_post() while循环中的函数。

问题是:既然$post->ID 是基于类的数组中的数据WP_Post这是否意味着从WP_Post 类位于从WP_Query

一个物体能在另一个里面吗?还是我遗漏了什么?

        $the_query = new WP_Query( $args );     
        if ( $the_query->have_posts() ) : ?>
            <?php while ( $the_query->have_posts() ) : $the_query->the_post(); ?>
                <?php echo \'<p>\' .$post->ID   .\'</p>\';?>

            <?php endwhile; ?>
            <?php wp_reset_postdata(); ?>       
        <?php else : ?>
            <p>No-data!</p>
        <?php endif; ?>

2 个回复
SO网友:ClemC

是的,包含其他对象的对象是“自然的”。A.House 对象包含的数组Furniture its中的对象$furnitures 所有物比如我们的情况。。。WP_Query 包含的数组WP_Post its中的对象$posts 所有物A.one-to-many relationship. 这是一个Aggregation.

OOP 都是关于编程建模的。这些是:

从系统上下文来看,dataprocess. entity 和logic.data 由其定义entity 以及process 由其定义logic. 然后,这两种上下文可以转换为一种常见的编程模式-OOP。。。

这个WP_Post 对象是entity 持有和定义人-itsdata. 这就是我们所说的Domain Model Object. 但是,因为它不包括任何Domain Logic, 设计纯粹主义者可以称之为Anemic Domain Model Object 相反

这个WP_Query 对象是process (服务)。实际上,它是由域定义的logic 我们的WP_Post 对象,例如:

$the_query->have_posts();
$the_query->the_post();
The WP Loop 自身通过WP_Query::$posts 并负责切换上下文(global $post 对象)。

从循环内:

  • WP_Query::the_post() 初始化global $post. 然后,您可以访问$post 数据通过,例如,get_the_ID()$post->ID.

  • WP_Query::have_posts() 检查是否有其他WP_Query::$posts 迭代通过。

SO网友:Tunji

您可以使用get_the_ID(), 它检索WordPress循环中当前项的ID:

$the_query = new WP_Query( $args );
if ( $the_query->have_posts() ) : ?>
    <?php while ( $the_query->have_posts() ) : $the_query->the_post(); ?>
        <?php echo \'<p>\' . get_the_ID() .\'</p>\';?>

    <?php endwhile; ?>
    <?php wp_reset_postdata(); ?>
<?php else : ?>
    <p>No-data!</p>
<?php endif; ?>

相关推荐

Increase offset while looping

我正在编写一个自定义帖子插件,它将自定义帖子分组显示为选项卡。每组4个岗位。是否可以编写一个偏移量随每次循环而增加的查询?因此,结果将是:-第一个查询显示从1到4的帖子-第二个查询显示从5到8的帖子-第三个查询显示从9到12的帖子等。 <div class=\"official-matters-tabs\"> <?php $args = array(\'post_type\' => \'official-matters\', \'showp