我目前正在我的WordPress网站上运行以下查询:
.PHP:
function get_details($key, $post_id) {
global $wpdb;
$values = $wpdb->get_results( "SELECT meta_value FROM {$wpdb->prefix}new_post_meta WHERE meta_key = '{$key}' AND post_id = '{$post_id}' LIMIT 1" );
return $values[0]->meta_value;
}
在页面上:
<?php echo get_details('facebook_url', $post_id); ?>
这是一个新的自定义表,其工作方式与 WP 帖子元相同。
这在页面上运行了 20 + 次,所以我想知道是否有更好的方法来做到这一点?
当前直接在数据库中运行查询需要 0.5128 秒,数据库表的大小为 36MB。
查询确实减慢了网站的速度。
感谢影子陈述显而易见的事情,但它有效:
public function get_meta_data() {
$meta_keys = array(
//META KEYS GO HERE IN ARRAY
);
$mks = implode("', '", $meta_keys);
//Get Results
global $wpdb;
$results = $wpdb->get_results( "SELECT meta_key, meta_value FROM {$wpdb->prefix}resorts_meta WHERE meta_key IN ('{$mks}') AND post_id = '{$this->id}'", OBJECT_K );
foreach($results as $key => $value) {
$this->$key = $value->meta_value;
}
return "SELECT meta_key, meta_value FROM {$wpdb->prefix}new_post_meta WHERE meta_key IN ('{$mks}') AND post_id = '{$this->id}'";
然后,我创建了一个函数来以>$this变量显示结果,如下所示:
public function get_meta( $key ) {
return $this->$key;
}
然后将get_meta_data存储在构造函数中。
谢谢影子。