Как можно ответить на комментарий в админке WordPress и установить ему статус "ожидание"?

Как я могу корректно использовать хук для добавления чекбокса в файл \wp-admin\includes\template.php? После добавления чекбокса, я добавил следующий код в functions.php для изменения статуса комментариев в зависимости от установленного значения чекбокса. Однако, почему-то чекбокс не реагирует, и статус комментариев остаётся "pending" (ожидание). Что я упускаю?
Изображение к вопросу
  • 8 февраля 2024 г. 8:08
Ответы на вопрос 1
Давайте разделим ваш вопрос на две части: ответ на комментарий в админке WordPress и изменение статуса, а затем добавление чекбокса с использованием хука и изменение статуса комментария на основе состояния чекбокса.

### Ответ на комментарий и установка статуса "ожидание"

1. Чтобы ответить на комментарий в админке WordPress:
   - Войдите в админку WordPress.
   - Перейдите в раздел "Комментарии".
   - Найдите комментарий, на который вы хотите ответить.
   - Нажмите на кнопку "Быстрое редактирование" или "Ответить" под ним.

2. Чтобы установить комментарий в статус "ожидание":
   - В том же разделе "Комментарии" выберите комментарий.
   - Используйте выпадающее меню действий, чтобы изменить статус (например, "Утвердить" или "Спам").
   - Вы также можете ответить на комментарий, и он будет автоматически утвержден, если у вас не включена настройка предварительной модерации комментариев.

### Добавление чекбокса в \wp-admin\includes\template.php и изменение статуса комментария

Вмешательство в ядро WordPress (например, прямое редактирование файлов ядра, таких как template.php) нежелательно, так как при обновлении WordPress все изменения будут утеряны. Вместо этого воспользуйтесь хуками и фильтрами, которые предусмотрены WordPress для расширения функциональности.

Для добавления чекбокса в админку WordPress вы можете использовать хук, например, `add_meta_boxes_comment`. В вашем файле `functions.php` темы или плагина код может выглядеть примерно так:

```php
function add_custom_checkbox_to_comment() {
    add_meta_box('custom_comment_checkbox_id', 'Custom Comment Checkbox', 'output_custom_checkbox', 'comment', 'normal', 'high');
}

function output_custom_checkbox($comment) {
    // Генерация HTML-кода чекбокса
    echo '<input type="checkbox" id="custom_comment_checkbox" name="custom_comment_checkbox" value="yes" />';
    echo '<label for="custom_comment_checkbox">Check this box if you want to mark comment as pending.</label>';
}

add_action('add_meta_boxes_comment', 'add_custom_checkbox_to_comment');

// Хук для сохранения значения чекбокса
function save_custom_comment_checkbox($comment_id) {
    if (isset($_POST['custom_comment_checkbox'])) {
        // Здесь логика обработки состояния чекбокса, например, установка комментария в ожидание
        // Не забудьте проверить значение nonce, если вы используете его, для безопасности
    }
}

add_action('edit_comment', 'save_custom_comment_checkbox');
```

При этом убедитесь, что проверяете и сохраняете состояние чекбокса правильно, включая использование нонсов для защиты от CSRF-атак.

### Требования к вашему коду
1. **Проверить отправку чекбокса:**
   Важно проверять, был ли чекбокс установлен и отправлен в форме на сервер. Используйте `isset()` для проверки существования `$_POST['custom_comment_checkbox']`.

2. **Безопасность:**
   Всегда убедитесь, что обрабатываете данные безопасно. Используйте функции WP для обработки данных (например, `wp_verify_nonce()`, если вы используете nonce
Похожие вопросы