Отобразить в счетчике количество всех постов

Решено

Здравствуйте. Имеется код:

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');
 

проверил — работает

СПАСИБО ОГРОМНОЕ! Красота!

в 26.02.2016.
Добавить Комментарий

Старайтесь предоставлять код в читаемой формате.

 

Если говорить о том что выводятся только для текущего, значит не нужно выбирать для текущего))


AND post_id = '".$current_post."' // не нужно

 

 

Но на самом деле не очень понял вопрос.

в 25.02.2016.

Код пытался вставить, но он ни в какую  не хотел ставится так как хотелось.
Да, это я уже пробовал сделать, но тогда появляются какие-то лишние цифры)

Посмотрел откуда берутся данные из БД.

В meta_value содержится количество добавленных статей (см. скриншот)

RE: Отобразить в счетчике количество всех постов

Цифры в столбце meta_value это количество добавленных статей в закладки.
Нужно отобразить на сайте их общее количество.

Up

Как вы думаете в wp реализована функция которая возвращает все поля из таблицы в виде массива?

в 25.02.2016.

Честно еще не совсем понял что именно вам нужно получить))

Вам нужно получить значение wpfp_favorites для поста? Для одного поста будет 0 или  1 или 2..

Или вам нужно получить для пользователя? Тогда отсюда вы эти данные не получите, так как тут нет id пользователя который добавил.

Возможно вам нужно вывести общее количество meta_value для всех записей? Это могу подсказать.

в 25.02.2016.

Или вам нужно количество постов у которых не 0? Это тоже могу подсказать)

в 25.02.2016.
Добавить Комментарий

Об объединении meta_value я и пытался сказать))
Нужно вывести общее количество того что есть в meta_value.

извиняюсь что создал ответ на вопрос. Но в комментариях не появилась форма.

в 26.02.2016.

Ничего страшного) Главное желание разобраться)

в 26.02.2016.
Добавить Комментарий

Попробуйте так:

 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.

в 26.02.2016.

а вывод значения через мою функцию?


echo onwp_get_meta_key_sum_value('wpfp_favorites');

Или для вывода значения используется код плагина?

 

в 26.02.2016.

Ваш код:

 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'); ?>
 

Если вы имеет ввиду шорткод, то нет.
Изначально в плагине нет функции вывода количества закладок.

 

 

в 26.02.2016.
Добавить Комментарий

Ваш ответ

Размещая свой ответ, вы соглашаетесь с правилами сайта.