PHP скрипт для WordPress для Утверждения комментариев

#php #wordpress

#php #wordpress

Вопрос:

Я хочу написать PHP скрипт (автономный) для утверждения комментариев.

Цель: Я использую Aksimet для фильтрации комментариев. После фильтрации Akismet несколько комментариев пропускаются и приходят на мою электронную почту для утверждения. Я получу оттуда идентификатор комментария и передам его скрипту в get parameter (вручную).

Таким образом, мне не нужно каждый раз входить в WP. Скрипт просто одобрит комментарий, поэтому особого риска или вреда не будет. Если скрипт сработает, то это займет меньше времени, и я могу одобрить комментарий в любое время, даже из офиса.


Я попытался установить бит модерации непосредственно в MySQL, чтобы посмотреть, работает это или нет! Ответ — да и нет. Он одобряет комментарий, но не обновляет сообщение. Итак, мой кэш показывает публикацию без нового комментария. Я использую плагин Super cache.

Задача состоит в том, чтобы написать скрипт ВНЕ среды WP. Таким образом, я могу получить доступ к скрипту без входа в систему администратора.

Пожалуйста, предложите трюк для этого и с чего начать.

Комментарии:

1. Вы пытались работать непосредственно в MySQL (как вы пытались) с отключенным плагином Super cache? Похоже, что это может быть корнем проблемы.

2. да, но я не могу отключить его для этого. Если я одобряю комментарий с панели администратора, то кэш автоматически очищается. Итак, подумал, может ли какой-нибудь эксперт в WP дать мне советы по этому поводу.

Ответ №1:

Я потратил немного времени и заставил это работать. Ключ в том, что вы можете использовать WP API в своем скрипте, включив wp-load.php .

Я протестировал это ниже, и это работает в моем WordPress. Он использует параметры ПОЛУЧЕНИЯ ‘commentid’ и ‘status’. Я оставляю его на ваше усмотрение для расширения, проверки на наличие ошибок, предоставления соответствующих механизмов безопасности и т.д.

 <?php
include('wp-load.php');

echo 'Running comment approval...<br>';
$wp_error = false;

if(isset($_GET['commentid']) amp;amp; isset($_GET['status']) )
{   


        $comment_id = $_GET['commentid'];
        $comment_status_to_set = $_GET['status'];

        $current_status = wp_get_comment_status( $comment_id );

        echo 'Current comment status is ' . $current_status .'<br>';
        echo 'Setting status to ' . $comment_status_to_set . '<br>';

        $res = wp_set_comment_status($comment_id, $comment_status_to_set, $wp_error);        

        $new_current_status = wp_get_comment_status( $comment_id ); 
        echo 'Now status is ' . $new_current_status . '<br>';
}
else
{
    echo 'No comment parameters passed in url';
}

?>
  

И вот использование для wp_set_comment_status из исходного кода:

  • @param int $comment_id Идентификатор комментария.
  • @param string $comment_status Новый статус комментария, либо ‘удерживать’, ‘одобрять’, ‘спам’, либо ‘удалить’.
  • @param bool $wp_error Следует ли возвращать объект WP_Error в случае сбоя. Значение по умолчанию равно false.
  • @return bool False при сбое или удалении и true при успешном завершении.

Кроме того, чтобы те, кому интересно, знали, как я решил эту проблему … в основном, я проверил каталог /wp-includes/ WP, чтобы посмотреть, есть ли какие-либо файлы, связанные с комментариями. Существует файл под названием comment.php в нем есть большинство, если не все, основных функций обработки комментариев, которые использует WordPress API.

Комментарии:

1. Я проверю и отвечу снова здесь. Поскольку вы использовали WP API, то кэш не должен создавать проблем. Я вернусь снова. Я просто проголосую за это сейчас. Ваше решение, которое предполагает, что я могу использовать wp-load.php так легко будет очень полезно для взломов. 🙂 спасибо

2. Извините! Я не смог это проверить. Я предполагаю, что этот образец работает. Способ написания кода правильный и помогите мне. Спасибо

Ответ №2:

@param int $comment_id Идентификатор комментария. @param string $comment_status Новый статус комментария, либо ‘удерживать’, ‘одобрять’, ‘спам’, либо ‘удалить’. @param bool $wp_error Следует ли возвращать объект WP_Error в случае сбоя. Значение по умолчанию равно false. @возвращает значение bool False при сбое или удалении и true при успешном выполнении.