2017-12-26 16 views
0

"series"という名前のカスタムフィールドを持つ投稿がいくつかあります。このカスタムフィールドですべての投稿をグループ化したいので、このカスタムフィールドがない投稿をすべて一覧にしたいと思っています。カスタム値フィールドでグループ化するワードプレス投稿

最初に私はグループ化されたカスタムフィールドの値を取得し、このカスタム値のキーと値を持つすべての投稿を再度照会できるようにしたいと考えました。しかし、独自のカスタム値を取得しようとしても機能しません。このコードで間違って

<?php 
    function query_group_by_filter($groupby){ 
     global $wpdb; 

     return $wpdb->postmeta . '.meta_key = "series"'; 
    } 
?> 

<?php add_filter('posts_groupby', 'query_group_by_filter'); ?> 

<?php $states = new WP_Query(array(
    'meta_key' => 'series', 
    'ignore_sticky_posts' => 1 
)); 
?> 

<?php remove_filter('posts_groupby', 'query_group_by_filter'); ?> 


<ul> 
<?php 
while ($states->have_posts()) : $states->the_post(); 

$mykey_values = get_post_custom_values('series'); 

foreach ($mykey_values as $key => $value) { 
    echo "<li>$key => $value ('series')</li>"; 
} 

endwhile; 
?> 
</ul> 

いただきました:私が試した何

はこれですか?

答えて

1

WP_Meta_Query

カスタム値を持つすべての記事:

<?php 
$args = array(
    'post_type' => 'my-post-type', 
    'post_status' => 'publish', 
    'posts_per_page' => -1, 
    'meta_query' => array(
     'relation' => 'AND', 
     array(
      'key' => 'series', 
      'value' => 'my-val', 
      'compare' => '=' 
     ), 
     array(
      'key' => 'series', 
      'value' => '', 
      'compare' => '!=' 
     ) 
    ) 
); 

$the_query = new WP_Query($args); 
if ($the_query->have_posts()) : ?> 
<ul> 
    <?php while ($the_query->have_posts()) : $the_query->the_post(); ?> 
     <li id="post-<?php the_ID(); ?>"> 
      <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a> 
     </li> 
    <?php 
    endwhile; 
    wp_reset_postdata(); ?> 
</ul> 
<?php endif; ?> 

と値なし:

<?php 
$args = array(
    'post_type' => 'my-post-type', 
    'post_status' => 'publish', 
    'posts_per_page' => -1, 
    'meta_query' => array(
     array(
      'key' => 'series', 
      'value' => '', 
      'compare' => '=' 
     ) 
    ) 
); 

$the_query = new WP_Query($args); 
if ($the_query->have_posts()) : ?> 
<ul> 
    <?php while ($the_query->have_posts()) : $the_query->the_post(); ?> 
     <li id="post-<?php the_ID(); ?>"> 
      <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a> 
     </li> 
    <?php 
    endwhile; 
    wp_reset_postdata(); ?> 
</ul> 
<?php endif; ?> 
+0

ありがとうございます!しかし、最初の部分(値を持つクエリ)は、私が直接探しているものではありません。カスタムフィールドで最初にグループが必要です。たとえば、カスタムフィールド 'series'でグループ化すると、値が 'Development Series'と 'Cloud Series'の投稿があると仮定して、これら2つの変数のカスタムフィールド値でグループ化し、それらのグループの下に関連する投稿を表示します。 – STORM

関連する問題