/ / Wiele zapytań MySQL na jednej stronie (WordPress) - php, mysql, wordpress

Wiele zapytań MySQL na jednej stronie (WordPress) - php, mysql, wordpress

Obecnie w mojej witrynie WordPress uruchomiłem następujące zapytanie:

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;
}

NA STRONIE:

<?php echo get_details("facebook_url", $post_id); ?>

Jest to nowa tabela niestandardowa, która działa tak samo jak meta postów WP.

Jest to uruchamiane ponad 20 razy na stronie, więc zastanawiałem się, czy istnieje lepszy sposób, aby to zrobić?

Obecnie uruchomienie zapytania bezpośrednio w bazie danych zajmuje 0,5128 s, a tabela bazy danych ma rozmiar 36 MB.

Zapytanie naprawdę spowalnia witrynę.

Odpowiedzi:

0 dla odpowiedzi № 1

Dzięki shadow za stwierdzenie oczywistości, ale zadziałało:

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}"";

Następnie stworzyłem funkcję do wyświetlania wyników w zmiennych $ this-> w następujący sposób:

public function get_meta( $key ) { return $this->$key; }

A następnie przechowywane get_meta_data w funkcji konstruowania.

Dzięki Shadow.