Intereting Posts
Как я могу динамически обновлять класс в моем коротком коде? Функция обратного вызова WordPress Ajax из плагина – OOP Категория пользовательских сообщений Эквивалентно in_category () для подкатегорий Как я могу исключить конкретный идентификатор из этой строки кода? Как отключить переписывание URL-адресов для определенных URL-адресов? Заявление IF в WordPress wp_embed_register_handler не работает показать последние записи в блоге авторов Показать полное дерево категории за год со всеми заголовками сообщений? Подключить разные функции к одному и тому же фильтру. ИЛИ Пропустить дополнительные аргументы для существующего фильтра? Усечение последней активности в buddypress Заполнение пользовательских типов сообщений / настраиваемых полей из внешней базы данных Галерея WordPress не отображается Как изменить размер изображения в WordPress из бэкэнда? Похоже на ошибку в wordpress

Ошибка уведомления PHP (когда на странице 404)

У меня есть шаблон 404.php для моей темы. У меня также есть WP_DEBUG в wp-config.php, установленном в TRUE .

Рассмотрим этот шаблон 404:

 get_header(); ?> <div id="content" style="full-width"> <div id="post-<?php the_ID(); ?>" <?php post_class(); ?>> <div class="post-content"> Whatever. </div> </div> </div> <?php get_footer(); ?> 

Я получаю следующую ошибку:

Примечание . Попытка получить свойство не-объекта в … / path / post-template.php в строке 30

Теперь я знаю, что ошибка вызвана вызовом the_ID() в строке 4. И самым простым решением было бы просто удалить его в шаблоне.

Однако есть места в других частях шаблона, например header.php , которые либо вызывают одну и ту же функцию, либо используют $post->ID .

Примером может быть $project_meta = get_post_meta($post->ID, 'show_project_meta', true); , Это общий доступ и отлично работает в любом другом шаблоне, то есть где страница имеет идентификатор страницы / страницы. Что я могу сделать для страницы 404?

Есть ли способ исправить это? Благодарю.

Solutions Collecting From Web of "Ошибка уведомления PHP (когда на странице 404)"

404.php шаблона 404.php используется для 404 ошибок: т.е. сообщений не найдено .

Поскольку сообщений нет, не существует объекта $post . Без объекта $post функции, такие как the_ID() , недоступны и возвращают ошибку, которую вы наблюдаете.

Исправить: заменить все экземпляры $post -derived данных статическими данными. например, замените это:

 <div id="post-<?php the_ID(); ?>" <?php post_class(); ?>> 

…с этим:

 <div id="post-0" <?php post_class(); ?>> 

the_ID предназначен для использования в Loop. Даже если ваш цикл начинается с get_header не все будет иметь правильный цикл. Это похоже на то, что происходит, но с другой стороны have_posts , который должен начинать ваш цикл, должен означать, что Loop не начинается на этой странице 404. Так и случилось, когда я попробовал. Так что, может быть, эта страница просто отсутствует в Loop.

$post устанавливается очень рано в загрузках страниц большую часть времени. Если это не в Loop, то есть Loop не запускается в get_header – этот идентификатор может быть не тем, что вы ожидаете, или тем, что вы хотите. В индексе блога index.php этот идентификатор является идентификатором первого сообщения в цикле, а не идентификатором индексной страницы, который вообще не имеет идентификатора, если вы не указали индекс на страницу в бэкэнд. Однако даже тогда идентификатор является первым сообщением в Loop, а не идентификатором статической страницы. У вас будет такая же проблема с сообщением / циклом с $post->ID .

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

Вы действительно должны установить его условно, как …

 if (is_single() { $pID = $post->ID; } elseif (is_search()) { $pID = <something>; } // and so on until you get all the conditions you need <div id="content" style="full-width"> <div id="post-<?php echo $pID ?>" <?php post_class(); ?>> 

Кроме того, я уверен, что id не должны начинаться с цифры. Я должен искать его, но если память служит. / …