Форум программистов, компьютерный форум, киберфорум
WordPress
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
 Аватар для rsl89
9 / 8 / 2
Регистрация: 18.04.2020
Сообщений: 600

Как инициировать get_posts

05.08.2020, 10:45. Показов 855. Ответов 8

Студворк — интернет-сервис помощи студентам
Всем привет.
Вообще задача стоит такая.
Получить сумму всех купленных постов, стоит система фриланса, и в данном случае пост это проект, у него есть стадия финиша и цена, так вот нужно получить сумму всех постов с стадией финиша, получится некий оборот средств.

Думал сделать так, инициировать get_posts, затем из него сделать выборку.
Нигде не написано азов, как инициировать? На том же https://wp-kama.ru/function/get_posts, сразу переходят к делу.
Как правильно инициировать?
1. Объявили глобальную $posts а что дальше?

Может быть кто-нибудь знает менее изощренный способ достичь моей цели?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
05.08.2020, 10:45
Ответы с готовыми решениями:

Как вывести записи из определенной таксономии через get_posts?
Как вывести записи из определенной таксономии через get_posts?

Пагинация при get_posts
Описываю ситуацию: Имеется рубрика Товары, в ней есть несколько дочерних рубрик (Арматура, Балка и т.д) На странице рубрики я вывожу все...

Как передать в функцию get_posts значение категории?
Здравствуйте подскажите пожалуйста как передать в функцию wordpress get_posts значение категории? $page_title=wp_title(); ...

8
Супер-модератор
Эксперт JSЭксперт HTML/CSSЭксперт PHP
 Аватар для gogolik
3969 / 2089 / 832
Регистрация: 13.03.2010
Сообщений: 6,892
05.08.2020, 14:48
Вы опять куда-то не туда идёте. Есть стандартный wp_query, который замечательно справится с этой задачей.
0
 Аватар для rsl89
9 / 8 / 2
Регистрация: 18.04.2020
Сообщений: 600
05.08.2020, 14:54  [ТС]
Цитата Сообщение от gogolik Посмотреть сообщение
Вы опять куда-то не туда идёте. Есть стандартный wp_query, который замечательно справится с этой задачей.
Можете подробнее подсказать, направить?
wp_query очень большой инструмент.
0
Супер-модератор
Эксперт JSЭксперт HTML/CSSЭксперт PHP
 Аватар для gogolik
3969 / 2089 / 832
Регистрация: 13.03.2010
Сообщений: 6,892
05.08.2020, 15:14
rsl89, делаем выборку по "стадии финиша" (что это? таксономия? метаполе?), в цикле суммируем поле "Цена" (или как там у вас).

Это не просто большой инструмент, это база, которую нужно в первую очередь изучить, когда начинаешь заниматься wp.
0
 Аватар для rsl89
9 / 8 / 2
Регистрация: 18.04.2020
Сообщений: 600
05.08.2020, 22:41  [ТС]
Цитата Сообщение от gogolik Посмотреть сообщение
rsl89, делаем выборку по "стадии финиша" (что это? таксономия? метаполе?), в цикле суммируем поле "Цена" (или как там у вас).

Это не просто большой инструмент, это база, которую нужно в первую очередь изучить, когда начинаешь заниматься wp.
делаем выборку по "стадии финиша" (что это? таксономия? метаполе?), в цикле суммируем поле "Цена" (или как там у вас).
ну вот чтобы понять нужно сначала все поля глянуть что там в массиве

Это не просто большой инструмент, это база, которую нужно в первую очередь изучить, когда начинаешь заниматься wp.
понятное дело, но все сразу не объять

Добавлено через 43 минуты
Получается так, все купленные посты имеют post_type: order
вывел
PHP
1
$query = new WP_Query( 'post_type=order' );
там нет цены, но эта информация ценна как получение ID постов с этим типом данных

далее в таблице postmeta мы можем найти эти айди, там есть графа meta_key там ищем amount ну и в столбе meta_value будет искомое число, потом все эти числа складываем...

осталось обмозговать как все это провернуть...

думаю так:
PHP
1
$query = new WP_Query( 'post_type=order' );
отсюда дернуть массив с ID постами, затем этот массив интегрировать в запрос по postmeta, тут не знаю(

Добавлено через 3 минуты
PHP
1
2
$query = new WP_Query( 'post_type=mjob_order' );
$id_order_posts = $query->get('id');
что-то и запрос не получается

Добавлено через 22 минуты
Проще так их получить:

PHP
1
2
3
4
5
6
$id_order_posts = $wpdb->get_results(
    "SELECT ID
                FROM `bs_posts`
                WHERE post_status = 'finished' 
                AND post_type = 'mjob_order'"
);
Получаем такой массив:
Code
1
array ( 0 => (object) array( 'ID' => '683', ), 1 => (object) array( 'ID' => '751', ), 2 => (object) array( 'ID' => '770', ), 3 => (object) array( 'ID' => '800', ), 4 => (object) array( 'ID' => '816', ), 5 => (object) array( 'ID' => '830', ), 6 => (object) array( 'ID' => '841', ), 7 => (object) array( 'ID' => '845', ), 8 => (object) array( 'ID' => '863', ), 9 => (object) array( 'ID' => '867', ), )
как выдернуть только ID?

PHP
1
$id_order_posts1 = $id_order_posts->get('ID');
так не работает

Добавлено через 48 минут
остается только foreach но как будет выглядеть запрос?

Добавлено через 48 минут
с foreach разобрался:
PHP
1
2
3
4
$ids = array();
foreach ($id_order_posts as $a) {
    $ids[] = $a->ID;
}
теперь postmeta:
как теперь собрать все amount:
PHP
1
2
3
4
5
6
$amounts_finish = $wpdb->get_results(
    "SELECT meta_value
                FROM `bs_postmeta`
                WHERE meta_key = 'amount' 
                AND post_id = '$ids'"
);
???
0
Супер-модератор
Эксперт JSЭксперт HTML/CSSЭксперт PHP
 Аватар для gogolik
3969 / 2089 / 832
Регистрация: 13.03.2010
Сообщений: 6,892
05.08.2020, 22:56
rsl89, зачем опять велосипеды? Я не понимаю, в чем проблема освоить базовый инструмент wp и работать с ним? Про wpdb забыть нужно, он используется только для специфических запросов!
На выходе у вас должно получиться что-то такое:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
<? $query = new WP_Query([
    'post_type' => 'mjob_order',
    'post_status' => 'finished'
]);
$all = 0;
$ids = [];
if($query->have_posts()):while($query->have_posts()):$query->the_post();
    $id = get_the_ID();
    $ids[] = $id;
    $amount = get_post_meta('amount');
    $all = $all + $amount;
endwhile;
endif;
На выходе имеем сумму таких заказов в $all и массив $ids с id заказов.
0
 Аватар для rsl89
9 / 8 / 2
Регистрация: 18.04.2020
Сообщений: 600
05.08.2020, 23:10  [ТС]
$ids[] = $id; что-то не очень хороший массив получается, а если там сотня иди две id будет, вообще кошмар же будет:
array ( 0 => 867, 1 => 863, )
array ( 0 => 867, 1 => 863, 2 => 845, )
array ( 0 => 867, 1 => 863, 2 => 845, 3 => 841, )
и т д...пока все id не добавит

а в $amount ничего не попало

в общем я тут ничего пока не понял, но не работает
0
Супер-модератор
Эксперт JSЭксперт HTML/CSSЭксперт PHP
 Аватар для gogolik
3969 / 2089 / 832
Регистрация: 13.03.2010
Сообщений: 6,892
05.08.2020, 23:20
rsl89, значит, мета другая, не amount.

Хотите дальше мучать базу wpdb (потому что стоило бы прочитать всё же про то, как работает wp_query) - мучайте дальше.
0
 Аватар для rsl89
9 / 8 / 2
Регистрация: 18.04.2020
Сообщений: 600
06.08.2020, 19:19  [ТС]
Цитата Сообщение от gogolik Посмотреть сообщение
rsl89, значит, мета другая, не amount.

Хотите дальше мучать базу wpdb (потому что стоило бы прочитать всё же про то, как работает wp_query) - мучайте дальше.
В общем решено!
При помощи wpdb, привык я к нему может это и плохо.
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
/получаем ид постов (стартапов), которые были куплены и завершены
$id_order_posts = $wpdb->get_results(
    "SELECT ID
                FROM `posts`
                WHERE post_status = 'finished' 
                AND post_type = 'order'"
);
$ids = array();
foreach ($id_order_posts as $a) {
    $ids[] = $a->ID;
}
 
// по ид поставм получаем их стоимость, их сумму
$amounts_finish = $wpdb->get_results(
    "SELECT SUM(meta_value)
                FROM `postmeta`
                WHERE meta_key = 'amount' 
                AND post_id IN (" . implode(",", $ids) . ")"
);
Для себя сделал два важных заключения.
Нужно разобраться в wp_query и в join sql, чтобы делать запросы в две таблицы за один раз.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
06.08.2020, 19:19
Помогаю со студенческими работами здесь

Как правильно инициировать функцию?
как правильно инициировать функцию GetDriveType() рытье в гугле привело к строке ...

Как инициировать нажатие на link программно из другого окна?
как инициировать нажатие на link &lt;A HREF='..asp' TARGET='right'&gt;&lt;A&gt; програмно из другого окна

Jquery.fileupload.js не пойму как инициировать отправку файла на сервер
Добрый вечер. Мне нужно отправлять на сервер большие файлы, от 1Гб и больше. В интернете вычитал, что для этой цели может помочь...

Как не инициировать поля базового класса в его производных классах?
У меня есть базовый класс, от него идут несколько производных классов, от которых, в свою очередь, идут свои производные классы. Набросал...

Как правильно инициировать StartupInfo при запуске внешнего приложения CreateProcess?
Собственно задача запустить внешнее консольное приложение в отдельном окне с заданными свойствами из основного с помощью данной функции, в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru