メタ呼び出しが実際にデータベース呼び出しを行わないように、Wordpress の投稿を取得する方法はありますか?
たとえば、私は現在持っています:
$args = array(
'posts_per_page' => 1000,
'post_type' => 'portfoliosample'
);
$query = new WP_Query($args);
while($query->have_posts()):
$query->the_post();
$style = '';
if(has_post_thumbnail($post->ID)){
$image = wp_get_attachment_image_src( get_post_thumbnail_id( $post->ID ), 'single-post-thumbnail' );
$largeurl = $image[0];
$style = ' style="background-image:url('.$largeurl.');"';
}
?>
<li id="post-<?php the_ID(); ?>" <?php post_class('half'); ?>>
<a href="<?php the_permalink()?>"<?php echo $style?> ng-click="lightbox('portfolio','<?php the_permalink()?>')">
<h3 class="entry-title caps"><?php echo strtoupper(the_title('', '', false)); ?></h3>
</a>
</li>
<?php
endwhile;
その情報があるthe_title()
ため、データベース呼び出しを行わないようなものです。post
ただし、$post
投稿のサムネイル ID やそのサムネイルの画像ソースがないようです。
次のようなカスタムクエリを実行すると:
global $wpdb;
$query = "
SELECT posts.*
FROM $wpdb->posts posts
WHERE posts.post_type = 'portfoliosample'
AND posts.post_status = 'publish'
ORDER BY posts.menu_order ASC
";
$pageposts = $wpdb->get_results($query, OBJECT);
if($pageposts)
{
global $post;
foreach($pageposts as $post)
{
setup_postdata($post);
$style = '';
if(has_post_thumbnail($post->ID)){
$image = wp_get_attachment_image_src( get_post_thumbnail_id( $post->ID ), 'single-post-thumbnail' );
$largeurl = $image[0];
$style = ' style="background-image:url('.$largeurl.');"';
}
?>
<li id="post-<?php the_ID(); ?>" <?php post_class('half'); ?>>
<a href="<?php the_permalink()?>"<?php echo $style?> ng-click="lightbox('portfolio','<?php the_permalink()?>')">
<h3 class="entry-title caps"><?php echo strtoupper(the_title('', '', false)); ?></h3>
</a>
</li><!-- #post-## -->
<?php
}
}
同時にメタを取得することはできますget_post_thumbnail()
か? それを処理する方法があることを望んでsetup_postdata()
いました。