0

「myportfoliotype」投稿タイプからすべての画像を取得するには、次のクエリがあります。これは正常に機能します。

ただし、ページが読み込まれたり更新されたりするときに、すべての画像がランダムに読み込まれるようにしたいと思います。

私はいくつかのチュートリアルに従い、次のコードを思いつきました。

<?php
 $query = new WP_Query( array( 'post_type' => 'myportfoliotype', 'posts_per_page' => -1, 'orderby' => 'rand' ) );
if( $query->have_posts() ){
    while($query->have_posts()){

        $query->the_post();
        $do_not_duplicate = $post->ID;
        $thumb_id = get_post_thumbnail_id( $post_id );
        $image_query = new WP_Query( array('post__not_in' => array (MultiPostThumbnails::has_post_thumbnail('myportfoliotype', 'logo'), $thumb_id ), 'orderby' => 'rand' , 'post_type' => 'attachment', 'post_status' => 'inherit', 'post_mime_type' => 'image', 'posts_per_page' => -1, 'post_parent' => get_the_ID() ) );
        while( $image_query->have_posts() ) {
            $image_query->the_post();
            $do_not_duplicate = $post->ID;
            //echo wp_get_attachment_image( get_the_ID() );
            $image = wp_get_attachment_image_src(get_the_ID(), 'large');?>


    <li> <a class="fancybox" rel="gallery1" href="<?php echo $image[0]; ?>"> <img src="<?php echo get_template_directory_uri(); ?>/js/timthumb.php?src=<?php echo $image[0]; ?>&amp;w=137&amp;h=137&f=2" alt="<?php the_title(); ?>" class="grey"/></a>
          <img src="<?php echo get_template_directory_uri(); ?>/js/timthumb.php?src=<?php echo $image[0]; ?>&amp;w=200&amp;h=200" alt="<?php the_title(); ?>" class="color"/>
    </li>


<?php           
        }
    }
}
?>  

これが正しいかどうかはよくわかりませんか?前に述べたように、それは画像を引き込みますが、ランダムではありません...。

任意のヘルプやガイダンスをいただければ幸いです。

乾杯、ダン

4

2 に答える 2

0

posts_orderbyおそらく、フィルターにフックするプラグインがあります。

このプラグインを無効にしたくない場合は、パラメータに追加でき'suppress_filters'=>trueますWP_Query

于 2012-10-08T15:14:06.480 に答える
0

私は自分の問題を解決しました。「posttypeorder」プラグインを使用して他の誰かが同じ問題を抱えている場合に備えて、回答を投稿します。

「投稿タイプの注文」の設定ページには、「自動ソート」と呼ばれるオプションがあり、これをオフにする必要があります。クエリを実行するときは、次を追加する必要があります。

$args = array(
              'post_type' => 'post-type-here',
              'orderby'   => 'menu_order',
              'order'     => 'ASC'
            );

それと同じくらい簡単です!

すべての助けてくれてありがとう!

于 2012-10-09T08:59:06.507 に答える