Перенаправление с использованием комментария_пункта WordPress фильтр вызывает ошибки - PullRequest
1 голос
/ 07 февраля 2020

Я использую фильтр comment_post_redirect для перенаправления пользователей на пользовательскую страницу после отправки комментария. Код работает, но время от времени пользователь не перенаправляется и получает сообщение об ошибке.

Вот мой код:

function feedback_submitted_redirect( $location, $comment )
{
    $location = get_site_url() . '/feedback-validation?commentid=' . $comment->comment_ID;
    if_debug_logger( 'Redirecting to feedback validation', array('comment_id' => $comment->comment_ID, 'comment_author' => $comment->comment_author, 'url' => $location) );
    return $location;
}
add_filter( 'comment_post_redirect', 'feedback_submitted_redirect', 11,2 );

Получение любых полезных отзывов от пользователей о том, что именно Это было почти невозможно, и я не могу воспроизвести проблему как на сайтах разработчиков, так и на живых сайтах, что значительно затрудняет решение проблемы. Также нет ошибок в debug.log или журналах в папке public_ html.

После добавления некоторой отладочной информации в журнал, я вижу, что функция перенаправления всегда запускается, но каждый сейчас и тогда пользователи не попадают на страницу перенаправления.

Я полагаю, что ошибка, которую они получают, это ошибка сервера 500, так как один из пользователей сказал, что это «внутренняя ошибка сервера» (хотя я бы думаю, что это будет зарегистрировано в журналах ошибок). Это заставляет меня думать, что перенаправление, вероятно, занимает слишком много времени и его отключают.

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

Есть идеи, что может вызвать проблемы здесь? Я пытался найти возможные причины, но ни одна из них не была связана.

Возможно ли, что второй аргумент ($comment) не установлен, поэтому возникает проблема, когда я пытаюсь получить доступ его свойства? Я собираюсь добавить некоторые проверки в функцию, на всякий случай, но я не могу вспомнить ни одного возможного сценария ios, где $comment не будет установлен, так как фильтр запускается после вставки комментария в db:

function feedback_submitted_redirect( $location, $comment )
{
    if( isset( $comment ) && !empty( $comment->$comment_ID ) ) {
        $location = get_site_url() . '/feedback-validation?commentid=' . $comment->comment_ID;
        if_debug_logger( 'Redirecting to feedback validation', array('comment_id' => $comment->comment_ID, 'comment_author' => $comment->comment_author, 'url' => $location) );
    }else{
        if_debug_logger( 'Redirection to feedback failed', array( 'url' => $location ) );
    }

    return $location;
}
add_filter( 'comment_post_redirect', 'feedback_submitted_redirect', 10,2 );

Может ли быть, что где-то выводится какой-то контент, вызывающий ошибку «Заголовки уже отправлены»? Или серверу не хватает памяти?

Полагаю, я просто пытаюсь найти возможные причины, поэтому я могу проверить их и, надеюсь, докопаться до сути этого

...