帖子之间的WP_Query连接

时间:2017-04-08 23:52:14

标签: php wordpress plugins

我正在使用Posts 2 Posts plugin。我有许多不同的帖子类型和许多不同的连接类型。

我创造了所有这些关系

function register_post_type_connections() {
$connection_post_types = array('person', 'nonprofit', 'business', 'article', 'event', 'structure', 'government');
foreach($connection_post_types as $post_type){

    p2p_register_connection_type( array(
        'name' => $post_type .'_to_structure',
        'from' => $post_type, // use $my_post_types if you didn't define $temp_array
        'to' => 'structure',
        'reciprocal' => false,
        'duplicate_connections' => true,
        'sortable' => true,
    ));
}
// Foreach repeated for each $connection_post_types
}
add_action( 'p2p_init', 'register_post_type_connections' );

在此功能中,foreach循环重复7次,以获得所有可能的组合。我测试了结果并且工作正常

制作了许多连接并将其附加到各个帖子上。我想显示所有这些连接的列表。

我得到了所有连接类型的完整列表,例如

function get_all_connection_types() {
    $connection_types = array();
    $connection_post_types = array('person', 'nonprofit', 'business', 'article', 'event', 'structure', 'government');
    foreach($connection_post_types as $post_type){
        $connection_types[] = $post_type .'_to_person';
        $connection_types[] = $post_type .'_to_nonprofit';
        $connection_types[] = $post_type .'_to_business';
        $connection_types[] = $post_type .'_to_article';
        $connection_types[] = $post_type .'_to_event';
        $connection_types[] = $post_type .'_to_structure';
        $connection_types[] = $post_type .'_to_government';
    }
    return $connection_types;
}

然后我运行循环

    $post_types = array('person', 'nonprofit', 'business', 'article', 'event', 'structure', 'timeline', 'government');
    $connection_types = get_all_connection_types();
    $connected = new WP_Query( array(
        'connected_type' => $connection_types,
        'post_type' => $post_types,
        'connected_items' => 'any',
        'connected_direction' => 'to',
        'posts_per_page' => 20,
        'orderby' => 'meta_value',
        'connected_orderby' => 'date',
        'connected_order' => 'desc'

    ) );        
    echo '<ul>';
    if ( $connected->have_posts() ) {
        while ( $connected->have_posts() ) : 
        $connected->the_post();

以下是我与数据库的连接

enter image description here

我的循环只返回person_to_person连接。所以我通过将connected_type更改为..

来测试
$connection_types = array('person_to_structure', 'person_to_person');

这给了我person_to_structure连接,但不是person_to_person。

为什么?

1 个答案:

答案 0 :(得分:1)

您需要将“connected_direction”作为数组传递,其中“connected_type”的确切长度会对您的索引文件中的此代码进行更改。

struct my_struct{
  char foo[15];
}a_struct;

int main(){
  strcpy(a_struct.foo, "test");
  return 0;
}

这样可行。