假设我正在开发一个最小主题,帖子页面single.php
仅显示帖子标题,摘录和内容。
所以一般来说就是
<?php the_title(); ?>
<?php the_excerpt(); ?>
<?php the_content(); ?>
所以我期待3次查询......
相反,如果我写一个自定义查询,我只是一次在数组中获取这3个数据...
<?php arr[] = get_row(select title, excerpt, content from wp_posts where post_id = 1); ?>
<?php echo arr[0] ?>
<?php echo arr[1] ?>
<?php echo arr[2] ?>
哪个更快还是有所作为?
如果错误,则pz忽略语法...
答案 0 :(得分:2)
the_title
函数使用路径是
the_title&gt; get_the_title&gt; get_post&gt; WP_Post
最后,WP_Post get_instance方法有以下几行
$_post = wp_cache_get( $post_id, 'posts' );
if ( ! $_post ) {
$_post = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM $wpdb->posts WHERE ID = %d LIMIT 1", $post_id ) );
if ( ! $_post )
return false;
$_post = sanitize_post( $_post, 'raw' );
wp_cache_add( $_post->ID, $_post, 'posts' );
} elseif ( empty( $_post->filter ) ) {
$_post = sanitize_post( $_post, 'raw' );
}
所以,the_title使用get_row方法。它是SELECT * FROM $wpdb->posts WHERE ID = %d LIMIT 1
而你的是select title, excerpt, content from wp_posts where post_id = 1
。也许你可以在你的sql代码中添加LIMIT 1
。
但wp_cache_get
是这些事物的不同之处。如果效果良好,缓存将改变每一种情况。