2017-12-01 23 views
0

私の作品のポートフォリオを表示するためにカスタムポストタイプを作成しました。 ユーザーがプロジェクトをクリックすると、プロジェクトの詳細が表示されます。カスタムポストタイプ最新の投稿のみを表示

単一のプロジェクトの詳細ページでは、その前後に投稿されたプロジェクトにユーザーがナビゲートできるようにしたいが、ページネーションが正しく機能するようにはできない。

私のループは、私が行っているリンクに関係なく、最新の投稿のみを表示しています。その理由は分かりません。私はこれが私のページングの問題であると思う。どんな助けもありがとうございます。

私はビデオを含めたものを経験しているイム:https://gyazo.com/4f148154e05bc205fd78bdde89de50c3

あなたは、私が「テストプロジェクト1」にしていますし、それが「テスト2」コンテンツを表示だ見ることができるように。また、(最も古いポストです)テストプロジェクト1ページネーションではなく、テスト2の同じページに私を指示された(新しいポスト)

シングルproject.php

<?php 
    $mypost = array('post_type' => 'project', 'posts_per_page' => 1,); 
    $loop = new WP_Query($mypost); 
    ?> 
    <?php while ($loop->have_posts()) : $loop->the_post();?> 

    <div class="col-lg-8" id="post-<?php the_ID(); ?>" <?php post_class(); ?>> 
    <?php the_content(); ?> 
    </div> 

    <div class="col-lg-4"> 
    <h3><?php the_title(); ?></h3> 
    <p><?php the_excerpt(); ?></p> 
    <h5>Date</h5> 
    <p><?php the_date(); ?></p> 
    <h5>Link</h5> 
    <p> 
     <?php $site= get_post_custom_values('project_link_detail'); 
      if($site[0] != ""){ 
     ?> 
     <a href="http://<?php echo esc_html(get_post_meta(get_the_ID(), 'project_link_detail', true)); ?>" target="_blank">Visit the Site</a> 
     <?php }else{ ?> 
      <em>Link Unavailable</em> 
     <?php } ?> 
    </div> 
    <hr> 
    <div class="col-lg-12"> 
    <div class="row"> 
     <div class="col-lg-6"> 
     <?php previous_post_link('%link') ?> 
     </div> 
     <div class="col-lg-6 text-right"> 
     <?php next_post_link(' %link') ?> 
     </div> 
    </div> 
    </div> 
    <?php endwhile; ?> 

portfolio.php

function my_portfolio() { 

    // Set the labels, this variable is used in the $args array 
    $labels = array(
    'name'    => __('Projects'), 
    'singular_name'  => __('Project'), 
    'add_new'   => __('Add New Project'), 
    'add_new_item'  => __('Add New Project'), 
    'edit_item'   => __('Edit Project'), 
    'new_item'   => __('New Project'), 
    'all_items'   => __('All Projects'), 
    'view_item'   => __('View Project'), 
    'search_items'  => __('Search Project'), 
    'featured_image'  => 'Preview', 
    'set_featured_image' => 'Add Preview' 
); 

    // The arguments for our post type, to be entered as parameter 2 of register_post_type() 
    $args = array(
    'labels'   => $labels, 
    'description'  => 'Holds portfolio specific data', 
    'public'   => true, 
    'menu_position'  => 25, 
    'supports'   => array('title', 'editor', 'thumbnail', 'excerpt', 'comments', 'custom-fields'), 
    'has_archive'  => true, 
    'show_in_admin_bar' => true, 
    'show_in_nav_menus' => true, 
    'has_archive' => 'page template', 
    'rewrite'   => true, 
    'query_var'   => 'project' 
); 

    // Call the actual WordPress function 
    // Parameter 1 is a name for the post type 
    // Parameter 2 is the $args array 
    register_post_type('project', $args); 
} 

答えて

0

カスタムポストタイプを作成する場合、アーカイブと単一ファイルにはarchive-portfolioとsingle-portfolioのようなカスタム投稿名が含まれている必要があります。これを行うと、Wordpressは自動的に各ファイルのクエリをマップします。そのため、単一のポートフォリオで新しいクエリを作成する必要はありません。グローバル$ post変数にアクセスすると、投稿のすべての情報を取得できますあなたは見ている。

カスタムクエリを削除しようとすると、ここから必要なものすべてを含むクリーンなテーマをダウンロードすることもできます:http://underscores.me/、ここでは単一ファイルの仕組みがわかります。

+0

うわー! Underscores.meは信じられないほどありがとうございました。私は問題を見つけ出してカスタムクエリを削除し、archive- {posttype} .phpとsingle- {post-type} .phpを使って自動的にマップされたクエリを使用しました。 – Nick

+0

はい、それは素晴らしいツールです、私はあなたがこれを解決する方法を考え出してうれしいです。 – ecastellano

関連する問題