0

Wordpressで「portafolio」カスタムタイプを作成しました。このコードで特定の投稿(正確にはID = 780)をクエリしたいと思います。これにより、その投稿内のすべての添付画像が取得されます。

<?php if (have_posts()) : while (have_posts()) : the_post(); ?>


    <?php if ( $post->post_type == 'portafolio' && $post->post_status == 'publish' ) {
            $attachments = get_posts( array(
                'post_type' => 'attachment',
                'posts_per_page' => -1,
                'post_parent' => $post->ID,
                'exclude'     => get_post_thumbnail_id(),
                'orderby'           => 'menu_order',
                'order'           => 'ASC'  

    ) );?>

    <?php
            if ( $attachments ) {
                foreach ( $attachments as $attachment ) {
                    $class = "post-attachment mime-" . sanitize_title( $attachment->post_mime_type );
                    $thumbimg = wp_get_attachment_image_src( $attachment->ID, 'original', false ); ?>


    {image : '<?php echo '' . $thumbimg[0] . ''; ?>', title : '<?php wp_title("",true); ?>', thumb : ''},

    <?php               
                }

            }
        }
    ?>


<?php endwhile; endif; ?>

ただし、そのコードのどこで取得したい特定の投稿をクエリする必要があるのか​​わかりません。

何か案は?

編集:

私が試してみました:

<?php
    query_posts( array('p' => 780) );
    if (have_posts()) : while (have_posts()) : the_post();
    ?>

    <h2>Test</h2>

    <?php endwhile; endif; ?>

運がなくても何かを取り戻すことができたかどうかを確認するだけです。

これが役立つ場合は、Wordpressでページを作成して、「portafolio」というカスタムタイプの単一の投稿を表示し、それをフロントページとして割り当てることができるようにしています。

4

2 に答える 2

1

get_postを使用するだけです:

$my_id = 780;
$my_post = get_post($my_id);
于 2012-08-29T14:28:11.163 に答える
1

ループのquery_posts前に呼び出すことでクエリを変更できます:

query_posts( array('p' => $myPostID) );

ループの前にこの関数を呼び出すだけです。最終的なコードは次のようになります。

<?php
query_posts( array('p' => 780) );
if (have_posts()) : while (have_posts()) : the_post();
?>

著者やポストタイプなど、さらに多くのパラメータを指定できます。メインループの後に別のループがある場合は、rewind_posts()afterを呼び出します。endwhile; endif;

編集:

後でいくつかコメントします...カスタム投稿タイプを使用している場合は、必ず'post_type'を関数に追加してください。例えば:

query_posts( array('p' => 780, 'post_type' => 'book') );
于 2012-08-29T14:38:23.177 に答える