как использовать аргументы date_query в списке комментариев wp в скрипте bash - PullRequest
0 голосов
/ 24 февраля 2020

Я хотел бы создать bash скрипт для подсчета количества комментариев в WordPress, 4 часа go.

Он будет использовать в плагине ios плагинов

Я хотел бы использовать "wp comment list" или какую-либо команду wp cli для запроса wordpress

Я буду использовать команду date bash для взаимодействия с wp cli.

I попытаться получить такие вещи, как

#!/bin/bash

now=$(date --date="4 hour ago" '%Y-%m-%d %T')

nbr_comment=$(wp comment list --patch=FULL/PATH/TO/wordpress --status=approve "--date_query=after $now" --format=count);

echo -e "nbr_comment \ n $ now"

Теперь моя проблема - найти правильный синтаксис в аргументах date_query.

Команды по-прежнему возвращают количество целых комментариев вместо количества комментариев за последние 4 часа.

source: wp список комментариев

- date_query ссылается на WP_Date_Query

благодарю вы за вашу помощь

Ответы [ 2 ]

0 голосов
/ 24 февраля 2020

большое спасибо за ваш ответ и точность.

извините за команду date, на самом деле код был:

date --date="4 hour ago" +%T-%m-%d\ %T

но ваша команда имеет тот же результат.

для команды WP Я не нашел способ получить мой основной результат. да, я пытался выделить команду --date_query.

в любом случае, когда я помещаю команду, как вы предлагаете:

#!/bin/bash

now=$(date --date="4 hour ago" '+%Y-%m-%d %T')

nbr=$(wp comment list --path=/var/www/wordpress "--date_query=after $now" --format=count);

echo -e "$nbr\n$now"

она подсчитывает все комментарии вместо последних четырех часов .

0 голосов
/ 24 февраля 2020

Похоже, у вас есть фундаментальное недопонимание разделения и цитирования. Когда вы присваиваете переменную $now, вы выполняете следующую команду в подстановке команд:

date --date="4 hour ago" +%Y-%m-%d %T

Это приведет к появлению дополнительного операнда (%T). Аргументы этой команды разбиты следующим образом:

--date="4 hour ago" # Optional argument
+%Y-%m-%d           # Output format
%T                  # Extra operand

Сгруппируйте выходной формат с кавычками, чтобы исправить это:

date --date="4 hour ago" '+%Y-%m-%d %T'
# With the variable assignment
now=$(date --date="4 hour ago" '+%Y-%m-%d %T')

Ваша команда wp также страдает от той же проблемы в аргументе date_query. (Я собираюсь предположить, что звездочки были попыткой разметки внутри блока кода.) Аргумент выглядит следующим образом:

--date_query='after'$now

Если мы предположим, что значение $now равно 2020- 02-24 07:00:00, аргументы будут разделены следующим образом:

--date_query=after2020-02-24 
07:00:00

Вам нужно будет процитировать это, чтобы избежать разделения. Для простоты я бы предложил использовать двойные кавычки во всей строке (я также добавил пробел после слова после):

"--date_query=after $now"

Редактировать: В будущем попробуйте использовать shellcheck. net, или вы можете загрузить локальную версию на свой компьютер. Shellcheck поймал бы эту ошибку за вас.

...