Предотвратить личное сообщение 404

Я хочу, чтобы частные сообщения (для тех, кто не вошел в систему) использовали шаблон single.php же, как и публичные сообщения, в настоящий момент они переходят к шаблону 404.php .

Я хорошо просмотрел основные файлы, но не могу найти, где происходит изменение шаблона (обратите внимание: это не перенаправление).

Может ли кто-нибудь помочь?

редактировать

Чтобы объяснить, почему я хочу этого, я хочу, чтобы все посетители просмотрели предварительный просмотр содержимого, но вошли в «члены», чтобы увидеть весь контент.

Согласно странице « Видимость контента» , частные сообщения видны только тем, у кого есть достаточные уровни разрешений. WordPress не предоставляет их пользователям без регистрации, поэтому (предположительно) 404 .

Если вы хотите отобразить ограниченный предварительный просмотр для нечленов, вместо того, чтобы устанавливать сообщение в Private , вы можете попробовать что-то вроде этого:

 add_filter( 'the_content', 'wpse101968_preview' ); function wpse101968_preview( $content ) { if( is_single() ) { if( ! is_user_logged_in() ) { $content = get_the_excerpt(); } } return $content; } 

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

Рекомендации

Кодекс:

  • is_user_logged_in()
  • get_the_excerpt()

Вы не видите перенаправление, чтобы подтвердить свое собственное наблюдение, так как вы видите, как он выглядит: «Файл не найден». Взгляните на запрос в источнике по строке 2438 (среди прочего) . Статус сообщения является частью самого запроса, поэтому, если статус не соответствует, то сообщения не найдены, а это означает 404 . Как видно из кода, status довольно жестко защищен. Это трудно переопределить.

Я бы рекомендовал использовать настраиваемый тип сообщений для сообщений «только для входа». Это будет намного легче контролировать как на переднем, так и на заднем конце.