ID ); $tags = get_the_tags( $post->ID ); $cat_post_id = array(); $tag_post_id = array(); // 関数使うより直接 SELECT 文発行した方が速い // 同じカテゴリに属する post_id 取得 if( !empty( $categories ) ) { foreach( (array)$categories as $val ) { //$cat_post_id = wp_parse_args( $cat_post_id, $wpdb->get_col( "SELECT object_id FROM $wpdb->term_relationships WHERE term_taxonomy_id = $val->cat_ID AND object_id != $post->ID" ) ); $cat_post_id = wp_parse_args( $cat_post_id, $wpdb->get_col( "SELECT object_id FROM $wpdb->term_relationships, $wpdb->term_taxonomy WHERE $wpdb->term_taxonomy.term_id = $val->cat_ID AND $wpdb->term_taxonomy.term_taxonomy_id = $wpdb->term_relationships.term_taxonomy_id AND object_id != $post->ID" ) ); } shuffle( $cat_post_id ); } // 同じタグに属する post_id 取得 if( !empty( $tags ) ) { foreach( (array)$tags as $val ) { //$tag_post_id = wp_parse_args( $tag_post_id, $wpdb->get_col( "SELECT object_id FROM $wpdb->term_relationships WHERE term_taxonomy_id = $val->term_taxonomy_id AND object_id != $post->ID" ) ); $tag_post_id = wp_parse_args( $tag_post_id, $wpdb->get_col( "SELECT object_id FROM $wpdb->term_relationships, $wpdb->term_taxonomy WHERE $wpdb->term_taxonomy.term_taxonomy_id = $val->term_taxonomy_id AND $wpdb->term_taxonomy.term_taxonomy_id = $wpdb->term_relationships.term_taxonomy_id AND object_id != $post->ID" ) ); } shuffle( $tag_post_id ); } // 同じタグに属する記事を優先表示させるため wp_parse_args 使わない( wp_parse_args だと同じ値があった時に、配列の後ろが残る形になるため ) //$post_in = wp_parse_args( $tag_post_id, $cat_post_id ); // key は使わず単なる連番なので、array_merge で結合するより + 演算子で結合しちゃった方が速い //$post_in = array_unique( $tag_post_id + $cat_post_id ); // と思ったけど、array_merge じゃないと要素が消えるパターンがあるから、やっぱり array_merge にしたw $post_in = array_unique( array_merge( $tag_post_id, $cat_post_id ) ); //$sticky_posts = get_option( 'sticky_posts' ); $args = array( 'posts_per_page'=> 5, 'post__in' => $post_in, 'orderby' => 'post__in', ); $st_query = new WP_Query($args); if( $st_query->have_posts() === true ) { while( $st_query->have_posts() === true ) { $wp_upload_dir = wp_upload_dir(); $st_query->the_post(); ?>
>
>No Image