2017-02-13 30 views
0

私がやっていることは、タイトルの最初の文字でカスタム投稿タイプをリストすることです。私はいくつかのコード例を試しましたが、私はそれが私がそれを望むように完全に機能するように思えます。ここでは私が試したことがないコードをいくつか紹介します。あなたが指定されているmovies_whereではなくposts_whereフィルタを使用する必要がありますように初期投稿者によるカスタム投稿タイプのカスタムクエリ

<div class="col-md-6"><!-- #### COLUMN #### --> 

       <!-- ############################################## --> 
       <!-- ############### PAGE TITLE T ################# --> 
       <!-- ############################################## --> 

       <p class="f_header">PAGE TITLE T</p> 

       <?php 

       $args = array(

        'post_type'    => 'movies', 
        'ignore_sticky_posts' => TRUE, 
        'substring_where'  => 'T', 

        ); 

        function restrict_by_first_letter($where, $qry) { 
         global $wpdb; 
         $sub = $qry->get('substring_where'); 
         if (!empty($sub)) { 
         $where .= $wpdb->prepare(
          " AND SUBSTRING({$wpdb->movies}.movies_title, 1, 1) = %s ", 
          $sub 
         ); 
         } 
         return $where; 
        } 
        add_filter('movies_where' , 'restrict_by_first_letter', 1 , 2); 

        $results = new WP_Query($args); 

       ?> 

       <table width="100%"><!-- #### TABLE #### --> 

        <?php 

         var_dump($results->request); 

         var_dump(wp_list_pluck($results->movies,'movies_title')); 

        ?> 

        <tr style="border-bottom: thin solid #111;"> 

         <td class="movie_genre">  

          <a href="<?php the_permalink() ?>"><?php the_title(); ?></a> 

         </td> 

        </tr> 

       </table><!-- ####/TABLE #### --> 

       <?php wp_reset_postdata(); ?> 

      </div><!-- ####/COLUMN #### --> 

答えて

0

それは私には見えます。また、存在しないデータベースデータを呼び出すように見えます。 $wpdb->postsテーブルにpost_titleを呼び出す必要があります。

私はこのようにコードを更新しようとするだろう:

function restrict_by_first_letter($where, $qry) { 
    global $wpdb; 
    $sub = $qry->get('substring_where'); 
    if (!empty($sub)) { 
     $where .= $wpdb->prepare(
     " AND SUBSTRING({$wpdb->posts}.post_title, 1, 1) = %s ", $sub 
     ); 
    } 
    return $where; 
} 
add_filter('posts_where' , 'restrict_by_first_letter', 1 , 2); 

私もfunctions.phpにこのコード(私はこの答えにコピーしたコードの一部)を移動します。

+0

あなたのご意見ありがとうございました。私はこの結果を得ました.string(264) "SELECT SQL_CALC_FOUND_ROWS wp_posts.ID FROM wp_posts WHERE 1 = 1 AND wp_posts.post_type = 'movies' AND(wp_posts.post_status wp_posts.post_date DESC LIMIT 0、10 "array(0){} タイトル-tb – scottiescotsman

+0

私は、私の答えを更新しました。また、存在しないデータベースデータを呼び出すように見えます。 – mbacon40

+0

ok私は自分のコードを更新しましたが、ハイパーリンクとしてタイトルをエコーするようになっていますが、単に単語配列をエコーし​​ますが、ハイパーリンクは動作します:/、... posts,'posts_title'); ?> scottiescotsman

関連する問題