Intereting Posts
Пытается использовать shortcode для плагина на собственной домашней странице отзывчивой темы Миграция Markdown (от Drupal) Получить класс родительской категории в post_class () Как восстановить адрес WordPress (URL) Как отключить кнопку публикации, если существует заголовок Создание многоязычного многоузлового Пароль защищает определенную страницу категории / должность Раздел «Профиль изображения» просто исчез из моего профиля пользователя 3 разных уведомления по почте Выберите событие, в котором дата начала меньше текущей даты, а дата окончания больше текущей даты Минимизация моего сайта разрешить арабские буквы при регистрации новой учетной записи Написание файла манифеста кэша для блога WordPress (кэш приложений, автономные веб-приложения) Вопрос памяти на WordPress Multisite Отображать функцию пользовательских сообщений ТОЛЬКО, если она имеет значение

Почему `url_to_postid` возвращает 0 при тестировании страницы` page_for_posts`?

Если я установил параметр «Настройки чтения» > « Сообщения» (другими словами, параметр page_for_posts ) на статическую страницу, а затем url_to_postid() передать свой URL-адрес через url_to_postid() он вернет 0 – почему это так?

Я понимаю, что это технически не статичная / пост-страница, а страница сообщений, однако эта страница все еще имеет идентификатор, и мне все равно нужно это понять. Достаточно смешно, мне нужно получить идентификатор, чтобы проверить, соответствует ли это значение как page_for_posts . Я не могу использовать 0 возвращаемый функцией url_to_postid, потому что 0 может быть возвращен по нескольким причинам.

Кто-нибудь знает, как я могу проверить текущий URL-адрес, чтобы получить его ID, когда он установлен на страницу page_for_posts ?

Solutions Collecting From Web of "Почему `url_to_postid` возвращает 0 при тестировании страницы` page_for_posts`?"

Причина, по которой вы получаете 0 назад, – это результат теста в конце функции:

 if ( ! empty( $query->posts ) && $query->is_singular ) return $query->post->ID; else return 0; 

Страница сообщений не проходит тест is_singular поэтому возвращается 0.

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

 $page_for_posts_url = get_permalink( get_option( 'page_for_posts' ) ); if( $current_url == $page_for_posts_url ) echo 'this is the page for posts!'; 

Взгляните на эту функцию, это может быть полезно. Функция WP get_page_by_path ()

Страница сообщений не является страницей . Например, установите страницу со страничным шаблоном в качестве страницы сообщений, и вы не получите шаблон страницы. Вместо этого вы, скорее всего, увидите archive.php или index.php , потому что основной цикл / запрос не загружает страницу, это загрузка первичного пост-архива.

Следовательно, этот код:

 if ( ! empty( $query->posts ) && $query->is_singular ) return $query->post->ID; else return 0; 

Когда на странице сообщений is_singular является ложным, потому что это страница архива, а не одна страница сообщения

Таким образом, на этом URL нет сообщения, и, следовательно, 0 является подходящим, потому что это код ошибки, указывающий отсутствие сообщений.