Задать вопрос

Как можно упростить данный код?

Помогите пожалуйста упростить данный код, если это возможно
// Начало выборка айди постов
$post_ids = $wpdb->get_results("SELECT ID FROM wp_posts
		WHERE post_author = $user_ID AND post_status = 'publish'", ARRAY_A);

$ids = array();
foreach ($post_ids as $k) {	
	$ids[] = $k['ID'];
}
// Конец выборка айди постов


// Начало выборка значений рейтинга
$posts_ratings = $wpdb->get_results('SELECT meta_value FROM wp_postmeta WHERE meta_key = "votes" AND post_id IN (' . implode(",", $ids) . ')', ARRAY_A);

$summ_rating = array();
foreach ($posts_ratings as $k) {
	$summ_rating[] = $k['meta_value'];
};
// Конец выборка значений рейтинга


//Вывод суммы рейтинга
echo array_sum($summ_rating);
//Конец суммы рейтинга
  • Вопрос задан
  • 2238 просмотров
Подписаться 3 Оценить 1 комментарий
Решения вопроса 1
Sekira
@Sekira
SELECT SUM(meta_value) FROM wp_postmeta WHERE meta_key = "votes" AND post_id IN (SELECT ID FROM wp_posts WHERE post_author = $user_ID AND post_status = 'publish')
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
HighQuality
@HighQuality
☁ Ниндзя девелопер
Можно использовать WP_Query и array_map, например.

Но пока кода работает как надо...
Ответ написан
Melkij
@Melkij
PostgreSQL DBA
$post_ids потом нафиг не нужен?

SELECT sum(meta_value) FROM wp_postmeta join wp_posts on wp_posts.id=post_id and post_author = $user_ID AND post_status = 'publish' WHERE meta_key = "votes"

fetch и echo сразу.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы