0

カスタム投稿タイプを使用するポートフォリオを統合する Web サイトを作成しています。これは、このチュートリアルに基づいて行われました。

これまでのところ、それはまさに私が探していたものであり、細部を除いてうまく機能します. 新しいカスタム投稿タイプから投稿を取得するために、チュートリアルの作成者は query_posts() コーデックスを使用しました。したがって、私のポートフォリオ ページの上部は次のようになります。

<?php
/* Template Name: Portfolio */
get_header();
query_posts('post_type=portfolio&posts_per_page=10');
?>

私が収集したのは、これが「「投稿タイプ」ポートフォリオから投稿を取得し、ページごとに10を表示する」と宣言していることです。私の問題は、ポートフォリオ ページからコンテンツを取得できないことです。私のポートフォリオページはカスタム投稿タイプからのみコンテンツを取得しているようで、使用できません:

<?php while ( have_posts() ) : the_post(); ?>
  <?php the_content(); ?>
<?php endwhile; // end of the loop. ?>

実際のページからコンテンツを取得します。

これは私がやろうとしていることです、私は置き換えました:

query_posts('post_type=portfolio&posts_per_page=10');

と:

add_action( 'pre_get_posts', 'add_my_post_types_to_query' );

function add_my_post_types_to_query( $query ) {
    if ( is_page( 8 ) && $query->is_main_query() )
        $query->set( 'post_type', array( 'portfolio' ) );
    return $query;
}

これは正しい道のように思えますが、それでもうまくいきません。カスタム投稿タイプから投稿を取得できません。

これを変更する方法はありますか?私もまだ学んでいるので、説明を明確にしていただければ幸いです。

ありがとうございました!

4

2 に答える 2

0

通常、次のようにクエリ投稿を変数に貼り付けます。

$catid = get_cat_ID('My Category Name');

$args = array(
    'posts_per_page' => 5,
    'orderby' => 'post_date',
    'order' => 'DESC',
    'post_type' => 'post',
    'post_status' => 'publish',
    'category' => $catid
);

$posts_array = get_posts($args); 

次に、次のようにループできます。

<?php foreach ($posts_array as $post) : setup_postdata($post);?>
    <h1><?php the_title(); ?></h1>
    <p><?php the_content(); ?></p>
<?php endforeach; ?>

最後に、変数を使用してページ コンテンツにアクセスできます$post。これは、wordpress によって自動的に設定されます。ページ コンテンツにアクセスするために、これ以上のコードを追加する必要はありません。

<?php foreach( $posts as $post ) : setup_postdata($post); ?>
    <h1><?php the_title(); ?></h1>
    <p><?php the_content(); ?></p>
<?php endforeach; ?>

ページ コンテンツの foreach ループは少しやり過ぎです。それを行うためのより良い方法があります (おそらく少なくとも)。それは動作します!

于 2013-10-18T19:39:12.010 に答える