Posts2post使用Connected_Items数组问题进行查询

时间:2013-08-27 作者:eskimo

My setup is as follows

我有一个名为“events”的自定义帖子类型和一个名为“genres”的自定义帖子类型,我将其与scribu的Posts2Posts插件链接。每个事件可以有多个类型链接到它。

What I would like to do

在事件页面上,我想根据当前事件的类型显示其他相关事件。

我认为我应该做什么

运行一个查询,获取当前事件的所有类型ID,并在第二个查询中传递这些ID,该查询将查找具有一个或多个此类类型链接的所有事件。我有一个p2p查询,希望在连接的\\u项中输出具有一个或多个给定类型的所有事件。我将它们作为数组传递,就像文档中一样。

为了说明我的结果,让我们这样说

event1将流派与post id 1240、1241、1242和1250链接,event2将流派与post id 1240、1241和1260链接,event3将流派与post id 1241和1242链接,在第一次查询中,我得到了所有流派id,这很有效。

第二个查询获取给定类型的所有事件(我将它们作为数组传递):

$args = array(
        \'connected_type\' => \'genres_to_events\',
        \'connected_items\' => array(1240,1241,1242),
        \'post_status\' => \'publish\',
        \'posts_per_page\' => -1,
    );

$query = new WP_Query($args);
问题是输出检查数组中的每个连接,因此查询的输出是:

事件1,但我想根据每个事件是否有一个或多个类型连接到它,输出一次每个事件。我认为文档中没有对此进行解释,有什么想法吗?

2 个回复
最合适的回答,由SO网友:GhostToast 整理而成

啊,我想我明白了。我认为你应该用你的第一个循环来做的,就是按照你所说的连接类型。然后,您希望获取与这些事件相关的所有事件,因此您应该在循环中只收集ID(在一个数组中收集它们),然后使用array_unique() 删除所有重复项。然后在循环中使用这个干净的数组来获取这些帖子。有意义吗?

所以,像这样的方法可能会奏效:

$args = array(
        \'connected_type\' => \'genres_to_events\',
        \'connected_items\' => array(1240,1241,1242),
        \'post_status\' => \'publish\',
        \'posts_per_page\' => -1,
    );

$query = new WP_Query($args);

$connected_out = array();

while($query->have_posts()) : $query->the_post();
    $connected_out[] = $post->ID;
endwhile;

$connected_out = array_unique($connected_out);
wp_reset_query();

$args = array(
    \'post__in\' => $connected_out;
);

$query = new WP_Query($args);
// go!

SO网友:eskimo

我将此作为一个答案发布,因为它部分是,因为我需要一些比评论中可用的字符更多的字符。希望可以:-)。

所以我找到了posts_per_page 阅读后发布this post.

可以将参数传递给get_related 功能,尽管看起来您必须修改p2p核心。我所做的就是添加我自己的get_related 函数,命名my_get_related.

代码如下:

public function my_get_related( $item, $extra_qv = array(), $output = \'raw\' ) {
        $extra_qv[\'fields\'] = \'ids\';

        $connected = $this->get_connected( $item, $extra_qv, \'abstract\' );

        $additional_qv = array( \'p2p:exclude\' => _p2p_normalize( $item ), \'posts_per_page\' => -1 );

        return $this->flip_direction()->get_connected( $connected->items, $additional_qv, $output );
    }
我在wp内容/插件/帖子到帖子/核心/定向连接类型中添加了这一点。php(原始get_related 函数位于第94行)。

您可以看到\'posts_per_page\' 如果添加了参数,则可以通过逗号分隔来轻松添加更多参数。

现在我还有一个问题:如何在p2p核心文件之外声明此函数?我不想把它添加到那里,因为更新插件时可能会适得其反。我想把它添加到我的函数中。php(我使用根主题,因此它将位于functions.php以外的其他文件中,但这与将它放在那里的方式相同,因为我将把它放在的文件是functions.php的一个包含)。

我试过了public function my_get_related...add_action(\'p2p_init\', \'my_get_related\') 但这行不通。

有没有关于如何在核心之外添加此功能的想法?

我想在那之后,问题终于解决了:-)

结束

相关推荐

使用新的WP-Query()从循环中过滤后期格式;

嗨,我目前正在为我的博客构建一个主题。下面的代码指向最新的帖子(特色帖子)。因为这将有一个不同的风格比所有其他职位。然而我想过滤掉帖子格式:链接使用我在循环中定义的WP查询,因为它给我带来了更多的灵活性。我该怎么做呢? <?php $featured = new WP_Query(); $featured->query(\'showposts=1\'); ?> <?php while ($featured->have_post

Posts2post使用Connected_Items数组问题进行查询 - 小码农CODE - 行之有效找到问题解决它

Posts2post使用Connected_Items数组问题进行查询

时间:2013-08-27 作者:eskimo

My setup is as follows

我有一个名为“events”的自定义帖子类型和一个名为“genres”的自定义帖子类型,我将其与scribu的Posts2Posts插件链接。每个事件可以有多个类型链接到它。

What I would like to do

在事件页面上,我想根据当前事件的类型显示其他相关事件。

我认为我应该做什么

运行一个查询,获取当前事件的所有类型ID,并在第二个查询中传递这些ID,该查询将查找具有一个或多个此类类型链接的所有事件。我有一个p2p查询,希望在连接的\\u项中输出具有一个或多个给定类型的所有事件。我将它们作为数组传递,就像文档中一样。

为了说明我的结果,让我们这样说

event1将流派与post id 1240、1241、1242和1250链接,event2将流派与post id 1240、1241和1260链接,event3将流派与post id 1241和1242链接,在第一次查询中,我得到了所有流派id,这很有效。

第二个查询获取给定类型的所有事件(我将它们作为数组传递):

$args = array(
        \'connected_type\' => \'genres_to_events\',
        \'connected_items\' => array(1240,1241,1242),
        \'post_status\' => \'publish\',
        \'posts_per_page\' => -1,
    );

$query = new WP_Query($args);
问题是输出检查数组中的每个连接,因此查询的输出是:

事件1,但我想根据每个事件是否有一个或多个类型连接到它,输出一次每个事件。我认为文档中没有对此进行解释,有什么想法吗?

2 个回复
最合适的回答,由SO网友:GhostToast 整理而成

啊,我想我明白了。我认为你应该用你的第一个循环来做的,就是按照你所说的连接类型。然后,您希望获取与这些事件相关的所有事件,因此您应该在循环中只收集ID(在一个数组中收集它们),然后使用array_unique() 删除所有重复项。然后在循环中使用这个干净的数组来获取这些帖子。有意义吗?

所以,像这样的方法可能会奏效:

$args = array(
        \'connected_type\' => \'genres_to_events\',
        \'connected_items\' => array(1240,1241,1242),
        \'post_status\' => \'publish\',
        \'posts_per_page\' => -1,
    );

$query = new WP_Query($args);

$connected_out = array();

while($query->have_posts()) : $query->the_post();
    $connected_out[] = $post->ID;
endwhile;

$connected_out = array_unique($connected_out);
wp_reset_query();

$args = array(
    \'post__in\' => $connected_out;
);

$query = new WP_Query($args);
// go!

SO网友:eskimo

我将此作为一个答案发布,因为它部分是,因为我需要一些比评论中可用的字符更多的字符。希望可以:-)。

所以我找到了posts_per_page 阅读后发布this post.

可以将参数传递给get_related 功能,尽管看起来您必须修改p2p核心。我所做的就是添加我自己的get_related 函数,命名my_get_related.

代码如下:

public function my_get_related( $item, $extra_qv = array(), $output = \'raw\' ) {
        $extra_qv[\'fields\'] = \'ids\';

        $connected = $this->get_connected( $item, $extra_qv, \'abstract\' );

        $additional_qv = array( \'p2p:exclude\' => _p2p_normalize( $item ), \'posts_per_page\' => -1 );

        return $this->flip_direction()->get_connected( $connected->items, $additional_qv, $output );
    }
我在wp内容/插件/帖子到帖子/核心/定向连接类型中添加了这一点。php(原始get_related 函数位于第94行)。

您可以看到\'posts_per_page\' 如果添加了参数,则可以通过逗号分隔来轻松添加更多参数。

现在我还有一个问题:如何在p2p核心文件之外声明此函数?我不想把它添加到那里,因为更新插件时可能会适得其反。我想把它添加到我的函数中。php(我使用根主题,因此它将位于functions.php以外的其他文件中,但这与将它放在那里的方式相同,因为我将把它放在的文件是functions.php的一个包含)。

我试过了public function my_get_related...add_action(\'p2p_init\', \'my_get_related\') 但这行不通。

有没有关于如何在核心之外添加此功能的想法?

我想在那之后,问题终于解决了:-)

相关推荐

使用新的WP-Query()从循环中过滤后期格式;

嗨,我目前正在为我的博客构建一个主题。下面的代码指向最新的帖子(特色帖子)。因为这将有一个不同的风格比所有其他职位。然而我想过滤掉帖子格式:链接使用我在循环中定义的WP查询,因为它给我带来了更多的灵活性。我该怎么做呢? <?php $featured = new WP_Query(); $featured->query(\'showposts=1\'); ?> <?php while ($featured->have_post