2016-05-19 10 views
0

投稿の一覧を表示しているページをビルドしています(潜在的にランダムに表示される可能性があります)。カスタム投稿タイプの各投稿に番号を割り当てますか?

これらの投稿はカスタム投稿タイプで、各投稿は組織化のための単一の分類に割り当てられます。

各投稿について、関連する番号を表示したいと思います。投稿IDを意味するわけではありません。基本的には、カスタム投稿タイプを独自の投稿リストとして扱いたいと思います。その投稿タイプの最初の投稿は投稿#1、2番目の投稿は#2などとなります。

タクソノミーでこれを行うことができれば、それはさらに優れています。しかし、私はカスタムポストタイプの投稿にナンバリングするだけで済むでしょう。

私の解決策はこれです:functions.phpで関数を作成してカスタム投稿タイプをループし、各投稿にカスタムフィールドとして番号(最初の投稿の1から始まる)を割り当てます。この機能は、投稿を表示するページがロードされるたびに実行されます。その関数は最初に独自のループで実行され、ページは通常のループを実行して各数値を取得します。

このソリューションは美容的に機能します。私は私が望む結果を得ている。ただし、ページが読み込まれるたびに実行されるため、あまり効率的ではありません。

これを行うより良い方法はありますか?投稿が公開されるたびに、自動的に投稿に番号を割り当てる方法でしょうか?投稿が削除された場合、スキップされた番号があることを理解しています。それは容認できる。

これは明らかです。

わかりやすくするために、また変更された現在のソリューションを更新するために、これを編集しました。もはや必要ではないので、私はここにあるコードブロックを削除しました。

+0

あなたがこれまでに –

+0

をコード化している私は、今のコードを追加しました:) – Heronymo

+0

あなたが「ポスト数」とはどういう意味ですか、あなたのコードを追加してください? – RafH

答えて

0

あなたのfunctions.phpファイル内の関数を追加し、このコード

EDITED CODE

を試してみては

function Get_Post_Number($postID){ 
$temp_query = $wp_query; 
$postNumberQuery = new WP_Query('orderby=date&posts_per_page=-1'); 
$counter = 1; 
$postCount = 0; 
if($postNumberQuery->have_posts()) : 
    while ($postNumberQuery->have_posts()) : $postNumberQuery->the_post(); 
     if ($postID == get_the_ID()){ 
      $postCount = $counter; 
     } else { 
      $counter++; 
     } 
endwhile; endif; 
wp_reset_query(); 
$wp_query = $temp_query; 
return $postCount; 
} 

これはあなたのループです

<ul id="uselist"> 
    <?php 
    query_posts(array(
    'post_type' => 'use', 
    'order' => 'desc', 
    'posts_per_page' => 6 
    )); 

    if (have_posts()) : 
     while (have_posts()) : the_post(); 

    $currentID = get_the_ID(); 
    $currentNumber = Get_Post_Number($currentID); 

      $usecategory = get_term_by('id', get_field('use_category'), 'usecategory'); 
     ?> 
      <li> 
       <div class="use" style="border-bottom:15px solid <?php the_field('category_colour', $usecategory); ?>;"> 
        <div class="useimage" style="background-image:url(<?php the_field('image'); ?>);"> 
         <?php if (get_field('display_vimeo_video') == 'yes') { ?> 
          <div class="playicon"><img src="<?php echo bloginfo('template_url'); ?>/images/playicon.png" /></div> 
         <?php } ?> 
        </div> 
        <div class="useinfo"> 
         <div class="usecatimage"> 
          <img src="<?php the_field('category_image', $usecategory); ?>" /> 
         </div> 
         <div class="usecatandtitle"> 
          <h2 class="usecat"><a href="<?php the_permalink(); ?>"><?php echo $usecategory->name; ?>/Use <?php echo $currentNumber ; ?></a></h2> 
          <h3 class="usetitle"><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h3> 
         </div> 
         <div class="usename"> 
          <?php the_field('name'); ?>, <?php the_time('M d'); ?> 
         </div> 
        </div> 
       </div> 
      </li> 
     <?php 

     endwhile; 
    else : 
    endif; 
    ?> 
</ul> 

私はこのコードを試していませんが、うまくいくはずです。

+0

こんにちは、返信ありがとうございます。これは残念なことに私が探しているものではありません。ポスト番号が投稿自体から来るようにしたいと思います。私が書いた5番目の投稿には何とか5が付いているはずです。投稿がランダムな順番で表示されていても、その投稿は投稿番号5として表示されます。 – Heronymo

+0

投稿IDを意味しますか? –

+0

編集コード、試してみてください、あなたが見ていたのですか?のためにing? –

0

私は、以下の2行、投稿数の設定1を追加し、番号を印刷1を順次探し:$ postNumber

<ul id="uselist"> 
     <?php 
     query_posts(array(
     'post_type' => 'use', 
     'order' => 'desc', 
     'posts_per_page' => 6 
     )); 

     if (have_posts()) : 

      $postNumber = 1; //add a sequential post number! 

      while (have_posts()) : the_post(); 
       $usecategory = get_term_by('id', get_field('use_category'), 'usecategory'); 
      ?> 
       <li> 



        <div class="use" style="border-bottom:15px solid <?php the_field('category_colour', $usecategory); ?>;"> 
         <div class="useimage" style="background-image:url(<?php the_field('image'); ?>);"> 
          <?php if (get_field('display_vimeo_video') == 'yes') { ?> 
           <div class="playicon"><img src="<?php echo bloginfo('template_url'); ?>/images/playicon.png" /></div> 
          <?php } ?> 
         </div> 
         <div class="useinfo"> 
          <div class="usecatimage"> 
           <img src="<?php the_field('category_image', $usecategory); ?>" /> 
          </div> 
          <div class="usecatandtitle"> 
           <h2 class="usecat"><a href="<?php the_permalink(); ?>"><?php echo $usecategory->name; ?>/# <?php echo $postNumber++; ?> //POST NUMBER WILL INCREASE SEQUENTIALLY HERE</a></h2> 
           <h3 class="usetitle"><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h3> 
          </div> 
          <div class="usename"> 
           <?php the_field('name'); ?>, <?php the_time('M d'); ?> 
          </div> 
         </div> 
        </div> 
       </li> 
      <?php 
      endwhile; 
     else : 
     endif; 
     ?> 
    </ul> 
+0

お返事ありがとうございます:)残念ながら、これは私が意味するものではありません。個々の投稿に割り当てられた番号を割り当て(または取得)したい。したがって、このカスタムポストタイプで書き込む最初の投稿は数字1になります。2番目の数字は数字2などです。その数字を表示するために検索したいと思います。これは、これらの投稿が必ずしも順番に表示されるわけではないからです。 – Heronymo

0

私はあなたが簡単にCustom Fieldsを使用して、これをやってのけることができると思います。カスタム投稿タイプの各投稿ごとに、カスタムメタフィールド、たとえばpost_numberを追加し、そのフィールドの値を手動で入力します。 そして、get_post_meta()を使用してページの値を表示してください。

<ul id="uselist"> 
    <?php 
    query_posts(array(
    'post_type' => 'use', 
    'order' => 'desc', 
    'posts_per_page' => 6 
    )); 

    if (have_posts()) : 
     while (have_posts()) : the_post(); 
      $usecategory = get_term_by('id', get_field('use_category'), 'usecategory'); 
     ?> 
      <li> 
       <?php echo get_post_meta($post->ID, 'post_number', true); ?> 
       <div class="use" style="border-bottom:15px solid <?php the_field('category_colour', $usecategory); ?>;"> 
        <div class="useimage" style="background-image:url(<?php the_field('image'); ?>);"> 
         <?php if (get_field('display_vimeo_video') == 'yes') { ?> 
          <div class="playicon"><img src="<?php echo bloginfo('template_url'); ?>/images/playicon.png" /></div> 
         <?php } ?> 
        </div> 
        <div class="useinfo"> 
         <div class="usecatimage"> 
          <img src="<?php the_field('category_image', $usecategory); ?>" /> 
         </div> 
         <div class="usecatandtitle"> 
          <h2 class="usecat"><a href="<?php the_permalink(); ?>"><?php echo $usecategory->name; ?>/Use #</a></h2> 
          <h3 class="usetitle"><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h3> 
         </div> 
         <div class="usename"> 
          <?php the_field('name'); ?>, <?php the_time('M d'); ?> 
         </div> 
        </div> 
       </div> 
      </li> 
     <?php 
     endwhile; 
    else : 
    endif; 
    ?> 
</ul> 
+0

こんにちは。私はそれを考えましたが、これはクライアントサイトであり、彼らはそれをしたくないでしょう:)カスタムフィールドが自動的に設定されたら、それを使用します。 – Heronymo

関連する問題