我正在使用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();
以下是我与数据库的连接
我的循环只返回person_to_person连接。所以我通过将connected_type更改为..
来测试$connection_types = array('person_to_structure', 'person_to_person');
这给了我person_to_structure连接,但不是person_to_person。
为什么?
答案 0 :(得分:1)
您需要将“connected_direction”作为数组传递,其中“connected_type”的确切长度会对您的索引文件中的此代码进行更改。
struct my_struct{
char foo[15];
}a_struct;
int main(){
strcpy(a_struct.foo, "test");
return 0;
}
这样可行。