2016-11-10 10 views
0

最近私はワードプレス映画のWebサイトを一から作成しました。その中で、動作していないコードを整理するのは難しいです。 私が持っている問題は、カスタムのポストタイプ "ムービー"と上記のポストタイプに添付されたカスタムメタデータがあることです。私のカスタムポストタイプ "ムービー"はメタデータ "リリース"によってリストされます。これは私のfunctions.phpファイルの一部です。

add_filter('rwmb_meta_boxes', 'your_prefix_meta_boxes'); 

function your_prefix_meta_boxes($meta_boxes) { 
$meta_boxes[] = array(
    'title'  => __('Movie Meta Box', 'textdomain'), 
    'post_types' => 'movies', 
    'fields'  => array(
     array(
      'id' => 'name', 
      'name' => __('Title', 'textdomain'), 
      'type' => 'text', 
     ), 
     array(
      'id' => 'released', 
      'name' => __('Release Date', 'textdomain'), 
      'type' => 'date', 
     ), 
     array(
      'id'  => 'rating', 
      'name' => __('Rating', 'textdomain'), 
      'type' => 'radio', 
      'options' => array(
       '0' => __('Unrated', 'textdomain'), 
       '1' => __('1', 'textdomain'), 
       '2' => __('2', 'textdomain'), 
       '3' => __('3', 'textdomain'), 
       '4' => __('4', 'textdomain'), 
       '5' => __('5', 'textdomain'), 
       '6' => __('6', 'textdomain'), 
       '7' => __('7', 'textdomain'), 
       '8' => __('8', 'textdomain'), 
       '9' => __('9', 'textdomain'), 
       '10' => __('10', 'textdomain'), 
      ), 
     ), 
     array(
      'id' => 'duration', 
      'name' => __('Duration', 'textdomain'), 
      'type' => 'text', 
     ), 
     array(
      'id'  => 'genre', 
      'name' => __('Genre', 'textdomain'), 
      'type' => 'textarea', 
     ), 
     array(
      'id' => 'director', 
      'name' => __('Director/s', 'textdomain'), 
      'type' => 'textarea', 
     ), 
     array(
      'id' => 'writer', 
      'name' => __('Writer/s', 'textdomain'), 
      'type' => 'textarea', 
     ), 
     array(
      'id' => 'stars', 
      'name' => __('Star/s', 'textdomain'), 
      'type' => 'textarea', 
     ), 
     array(
      'id' => 'storyline', 
      'name' => __('Storyline', 'textdomain'), 
      'type' => 'textarea', 
     ), 
    ), 
); 
return $meta_boxes; 
} 

そして、これは、アーカイブ・movies.phpある

<?php get_header(); ?> 

<?php bd_pagination(); ?> 

<div class="row" role="main"><!-- ROW --> 

<?php 

$args = array(

     "posts_per_page" => 10, 
     "post_type"   => "movies", 
     "post_status"  => "publish", 
     "meta_key"   => "released", 
     "orderby"   => "meta_value_num", 
     "order"    => "DESC" 

     ); 

$wp_query = new WP_Query($args); 

?> 

<?php if ($wp_query->have_posts()) : ?> 

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

<div class="col-lg-9"> 

<div class="panel panel-default panel-body" style="padding-bottom:0;"><!-- PANEL --> 

<p class="fa fa-calendar"></p>&nbsp;<?php the_time('d-m-Y'); ?> | <p class="fa fa-clock-o"></p> <?php the_time('H:i a'); ?> |&nbsp;<p class="fa fa-user"></p>&nbsp;<a href="<?php echo get_author_posts_url(get_the_author_meta('ID')); ?>"><?php the_author(); ?></a></i> |&nbsp;<p class="fa fa-envelope-o"></p>&nbsp;posted in movies 

<article class="post <?php if (has_post_thumbnail()) { ?>has-thumbnail <?php } ?>"> 

    <div class="post-thumbnail"> 

     <a href="<?php the_permalink(); ?>"><?php the_post_thumbnail('image-poster'); ?></a> 

    </div> 

    <article class="post-thumbnail-text"> 

     <h4 class="align_Center" style="color:#000; padding-bottom:1em;"> 

      <?php the_title(); ?> 

     </h4> 

     <?php 

      $nam = get_post_meta(get_the_ID(), "name", true); 
      $rel = get_post_meta(get_the_ID(), "released", true); 
      $rat = get_post_meta(get_the_ID(), "rating", true); 
      $dur = get_post_meta(get_the_ID(), "duration", true); 
      $gen = get_post_meta(get_the_ID(), "genre", true); 
      $dir = get_post_meta(get_the_ID(), "director", true); 
      $wri = get_post_meta(get_the_ID(), "writer", true); 
      $sta = get_post_meta(get_the_ID(), "stars", true); 
      $sto = get_post_meta(get_the_ID(), "storyline", true); 

     ?> 

     <div class="align_Left"> 

      <p><b>Title:</b>&nbsp;<?php echo $nam; ?></p> 
      <p><b>Released:</b>&nbsp;<?php echo $rel; ?></p> 
      <p><b>Rating:</b>&nbsp;<?php echo $rat; ?>/10</p> 
      <p><b>Duration:</b>&nbsp;<?php echo $dur; ?>&nbsp;min</p> 
      <p><b>Genre:</b>&nbsp;<?php echo $gen; ?></p> 
      <p><b>Director/s:</b>&nbsp;<?php echo $dir; ?></p> 
      <p><b>Writer/s:</b>&nbsp;<?php echo $wri; ?></p> 
      <p><b>Stars:</b>&nbsp;<?php echo $sta; ?></p> 

     </div> 

    </article> 

</article> 

<br> 

<div class="panel panel-default panel-body" style="padding:20px 20px 10px 20px"> 

    <p><b>Storyline:</b>&nbsp;<?php echo $sto; ?></p> 

</div> 

</div><!-- /PANEL --> 

</div> 

<?php endwhile; ?> 

<?php else : echo '<p>NO CONTENT FOUND</p>'; ?> 

<?php wp_reset_postdata(); ?> 

<?php endif; ?> 

</div><!-- /ROW --> 

<?php bd_pagination(); ?> 

<br> 

</div><!-- ./CONTAINER --> 

<?php get_template_part('Secondfooter'); ?> 

<?php get_footer(); ?> 

は、誰かが..週間のためにそれ@なって私を助けることができる願っています。右のタイプを定義する予め

おかげ

+0

クエリに代わりmeta_value_numをmeta_valueを使用してみましたか? –

+0

Offhand問題があなたの保存メタボックス機能にある可能性があります。設定する配列に日付が指定されていますが、db postメタをチェックすると、テキスト形式で保存されている可能性があります。タイムスタンプ( 'strtotime () 'が動作するはずです) – David

答えて

0

使用meta_type

'meta_key' => 'released', 
'meta_type' => 'DATE', 
'orderby' => 'meta_value_date', 
'order'  => 'DESC' 

を(この例では、DATEフォーマットを使用前提)


meta_value - そのAを注meta_key=keynameも事前に入力する必要がありますクエリで送信されます。ソートはアルファベット順で行われるので、文字列(単語など)には問題ありませんが、数字(1,3,3,4,6,6などではなく1,3,5,6,7,8,9など) 34、56)。数値の代わりにmeta_value_numを使用してください。メタ値を特定の型としてキャストする場合は、meta_typeと指定することもできます。可能な値は$meta_queryと同じNUMERICBINARYCHARDATEDATETIMEDECIMALSIGNEDTIMEUNSIGNED、です。 meta_typeを使用する場合は、それに応じてmeta_value_ *を使用することもできます。たとえば、DATETIMEをmeta_typeとして使用する場合は、meta_value_datetimeを使用して順序構造を定義できます。

は、ここでその詳細を読む:Orderby_Parameters

関連する問題