POST_PARENT数组不工作

时间:2014-12-03 作者:Christian G.

我有个问题。我创建了一个短代码来显示galerie。我用过query_posts 要获取父帖子的所有帖子并从中获取数据,请执行以下操作:

function galerie_baureihe() { 
   $parent_id = get_the_id($post->post_parent); $page_id = $parent_id; 
   query_posts(array(\'post_type\' => \'page\', \'post_parent\' => $page_id, \'orderby\' => \'title\', \'order\' => ASC,  \'posts_per_page\' => \'9999\'));
   if (have_posts()) :
      while (have_posts()) : the_post();
         $return_string .= \'<div class="dynamische-galerie"><div class="col-4"><div class="dynamische-galerie-wrapper"><a href="\'.get_permalink().\'">\'.get_the_post_thumbnail( $post_id, array(285,200) ).\'</a><div class="dynamische-galerie-caption"><a href="\'.get_permalink().\'"><b>\'.get_the_title().\'</b><br>\'.number_format(get_field( \'nettogrundflaeche\' ),2,\',\',\'.\').\'<span>&nbsp;m²</span></a></div></div></div></div>\';
      endwhile;
   endif;
   wp_reset_query();
   return $return_string;
}

add_shortcode( \'galerie_baureihe\', \'galerie_baureihe\' );
这很好,但现在我需要在另一端使用这样的短代码\'post_parent\' => array(376, 379), 而不是\'post_parent\' => $page_id,

以下是其他代码:

function galerie_klassisch_wohnen() { 
   query_posts(array(\'post_type\' => \'page\', \'post_parent\' => array(376, 379), \'orderby\' => \'title\', \'order\' => ASC,  \'posts_per_page\' => \'9999\'));
   if (have_posts()) :
      while (have_posts()) : the_post();
         $return_string .= \'<div class="dynamische-galerie"><div class="col-4"><div class="dynamische-galerie-wrapper"><a href="\'.get_permalink().\'">\'.get_the_post_thumbnail( $post_id, array(285,200) ).\'</a><div class="dynamische-galerie-caption"><a href="\'.get_permalink().\'"><b>\'.get_the_title().\'</b><br>\'.number_format(get_field( \'nettogrundflaeche\' ),2,\',\',\'.\').\'<span>&nbsp;m²</span></a></div></div></div></div>\';
      endwhile;
   endif;
   wp_reset_query();
   return $return_string;
}

add_shortcode( \'galerie_klassisch_wohnen\', \'galerie_klassisch_wohnen\' );
但似乎我无法将数组用于post\\u parent。如果我使用\'post_parent\' => 376, 它可以工作,但不能与\'post_parent\' => array(376, 379),

我希望你们能理解我糟糕的英语。如何获得使用数组的短代码?

1 个回复
SO网友:birgire

不建议使用query_posts(), 检查此示例warning noteCodex:

此功能不适用于插件或主题。如后文所述,有更好、性能更好的选项来更改主查询。query_posts() 通过用查询的新实例替换页面的主查询来修改页面的主查询是一种过于简单且有问题的方式。它效率低下(重新运行SQL查询),并且在某些情况下会彻底失败(尤其是在处理POST分页时)。任何现代WP代码都应该使用更可靠的方法,例如pre_get_posts 挂钩,用于此目的。

关于post parents数组,您使用了错误的参数。存在post_parent__in 可以处理数组输入的参数。

因此,请尝试此辅助查询,而不是当前查询:

$query = new WP_Query( 
    array(
        \'post_type\'       => \'page\', 
        \'post_parent__in\' => array(376, 379), 
        \'orderby\'         => \'title\', 
        \'order\'           => ASC,  
        \'posts_per_page\'  => 9999
    )
);
您还应该考虑使用$return_string = \'\'; 要避免PHP未定义变量,请在使用.= 用于字符串串联。

然后更换wp_reset_query() 具有wp_reset_postdata(), 重置$post 主查询的变量。

结束

相关推荐

Echo array value

我使用以下查询将上周条目的数据存储在数据库中:for ( $i; $i <= 7; $i++ ) { $val[$i]= $wpdb->get_results( \"SELECT COUNT(`order_total`) AS \'Total\' FROM vm_orders WHERE DATE = CURDATE()-$i\" ); } 当我print_r( $var ) 我得到:Array ( [1] => Array (&