Отобразить в счетчике количество всех постов
Здравствуйте. Имеется код:
function wpfp_get_current_count() { global $wpdb; $current_post = get_the_ID(); $query = "SELECT post_id, meta_value, post_status FROM $wpdb->postmeta"; $query .= " LEFT JOIN $wpdb->posts ON post_id=$wpdb->posts.ID"; $query .= " WHERE post_status='publish' AND meta_key='wpfp_favorites' AND post_id = '".$current_post."'"; $results = $wpdb->get_results($query); if ($results) { foreach ($results as $o): echo $o->meta_value; endforeach; }else { echo( '0' ); } }Он выводит количество добавленных статей в избранное, через плагин. Проблема в том что он количество при добавлении от 2 статей не показывает. Т.е. Есть статья 1 и статья 2, счетчик закладок 0. Когда добавляем 1 статью в избранное, счетчик становится 1 (get_the_ID() в цикле нашел id текущего поста и показал его). Когда переходим на статью 2 и добавляем в избранное, счетчик 1, т.е. счетчик работает только для текучих статей, а не в общем. Как сделать чтобы работал общий?
function onwp_get_meta_key_sum_value($meta_key) { global $wpdb; $meta_key = esc_sql($meta_key); $table_name = $wpdb->get_blog_prefix() . 'postmeta'; // делаем запрос $result = $wpdb->get_results("SELECT SUM( meta_value ) FROM {$table_name} WHERE meta_key = '{$meta_key}';", ARRAY_N); if ($result[0][0]) { $result = $result[0][0]; } else { $result = 0; } return $result; } echo onwp_get_meta_key_sum_value('wpfp_favorites');
проверил — работает
СПАСИБО ОГРОМНОЕ! Красота!
Старайтесь предоставлять код в читаемой формате.
Если говорить о том что выводятся только для текущего, значит не нужно выбирать для текущего))
AND post_id = '".$current_post."' // не нужно

Но на самом деле не очень понял вопрос.
Код пытался вставить, но он ни в какую не хотел ставится так как хотелось.
Да, это я уже пробовал сделать, но тогда появляются какие-то лишние цифры)
Посмотрел откуда берутся данные из БД.
В meta_value содержится количество добавленных статей (см. скриншот)
Цифры в столбце meta_value это количество добавленных статей в закладки.
Нужно отобразить на сайте их общее количество.
Up
Как вы думаете в wp реализована функция которая возвращает все поля из таблицы в виде массива?

Честно еще не совсем понял что именно вам нужно получить))
Вам нужно получить значение wpfp_favorites для поста? Для одного поста будет 0 или 1 или 2..
Или вам нужно получить для пользователя? Тогда отсюда вы эти данные не получите, так как тут нет id пользователя который добавил.
Возможно вам нужно вывести общее количество meta_value для всех записей? Это могу подсказать.

Или вам нужно количество постов у которых не 0? Это тоже могу подсказать)
Об объединении meta_value я и пытался сказать))
Нужно вывести общее количество того что есть в meta_value.
извиняюсь что создал ответ на вопрос. Но в комментариях не появилась форма.

Ничего страшного) Главное желание разобраться)
Попробуйте так:
function onwp_get_meta_key_sum_value($meta_key) { global $wpdb; $meta_key = esc_sql($meta_key); $table_name = $wpdb->get_blog_prefix() . '_postmeta'; // делаем запрос $result = $wpdb->get_results("SELECT SUM( meta_value ) FROM {$table_name} WHERE meta_key = {$meta_key};", ARRAY_N); if ($result[0][0]) { $result = $result[0][0]; } else { $result = 0; } return $result; }
Вывод:
echo onwp_get_meta_key_sum_value('wpfp_favorites');
Спасибо, но нет.
При добавлении в избранное количество — 0.

а вывод значения через мою функцию?
echo onwp_get_meta_key_sum_value('wpfp_favorites');
Или для вывода значения используется код плагина?
Ваш код:
function onwp_get_meta_key_sum_value($meta_key) { global $wpdb; $meta_key = esc_sql($meta_key); $table_name = $wpdb->get_blog_prefix() . '_postmeta'; // делаем запрос $result = $wpdb->get_results("SELECT SUM( meta_value ) FROM {$table_name} WHERE meta_key = {$meta_key};", ARRAY_N); if ($result[0][0]) { $result = $result[0][0]; } else { $result = 0; } return $result; }
Добавил в function.php темы.
Вывод на странице сделал так:
<?php echo onwp_get_meta_key_sum_value('wpfp_favorites'); ?>
Если вы имеет ввиду шорткод, то нет.
Изначально в плагине нет функции вывода количества закладок.