web-dev-qa-db-ja.com

カスタムコンテンツタイプをページテンプレートに取り込む

私は至るところで解決策を探しましたが、まだ解決策を見つける必要はありません。これが状況です。私はプラグインCustom Content Type Managerを使用してカスタムコンテンツタイプを作成しました、そして今私はWPで作成したページ内でこれらのカスタム投稿タイプを使用する必要があります。

そこで私は "Photos"というページを作り、テンプレートのphpファイルを使ってページのレイアウトやスタイルを設定しました。私が入れたカスタムフィールドを取得するために、プラグインは私のためにサンプルテンプレートを生成しました。それは次のようになります:

get_header(); ?>
<?php if ( have_posts() ) while ( have_posts() ) : the_post(); ?>
    <h1><?php the_title(); ?></h1>
        <?php the_content(); ?>
        <?php the_author(); ?>

        <h2>Custom Fields</h2>  
        <strong>Image:</strong> <?php list($src, $w, $h) = get_custom_field('image:to_image_array');?>

        <img src="<?php print $src; ?>" height="<?php print $h; ?>" width="<?php print $w ?>" /><br />

<?php endwhile; // end of the loop. ?>

問題:

"the_content();"を使用するとその他のphpメソッドは、このプラグインで作成されたカスタムコンテンツタイプのコンテンツではなく、 "Photos"というページからコンテンツを取得します。

The_content();を書き換えることができます。カスタムコンテンツタイプからページのコンテンツの代わりに現れる? WPページを作成してカスタムテンプレートを使用する以外に、これを実行する必要がある場合がありますか。私はこの全体[WPプログラミングビジネスにかなり新しいです。

1
Romes

あなたのコードのループは自動的に現在のページID(すなわち写真)からデータを引っ張ります。あなたが探しているデータのクエリを定義する必要があります。スラッグがあなたの投稿タイプ用のものであれば、必ずphotoを置き換えてください。

post_typeに加えて使用できる他の引数については、 http://codex.wordpress.org/Class_Reference/WP_Query を参照してください。

<?php

$query = new WP_Query( array( 'post_type' => 'photo' ) );

if ( $query->have_posts() ) :

    while ( $query->have_posts() ) : $query->the_post(); ?>

             <?php the_title(); ?>

    <?php endwhile;

endif;

?>
3
developdaly

ここで起こっていることはWPはあなたのURLが "photos"で終わっていることに気づいているのでそれに基づいてクエリを構築しているということです。あなたはそれを望んでいません。あなたはあなた自身のクエリを設定する必要があります。 このスレッド はあなたの問い合わせをどのように構成するかのアイデアをあなたに与えるべきです。

2
Adam Rice