Какой код PHP можно использовать для получения имени текущей страницы в теме WordPress?
Все решения , которые я видел до сих пор ( the_title()
, get_page()->post_name
, get_post()
и т.д.) не работают на страницу , которая содержит почтовые записи. Все они вернут имя последней записи в блоге.
Другими словами, предположим, что у вас есть страница, созданная в WordPress с именем «Мои новости». Эта страница установлена как «страница поста». Добавьте пару постов на страницу. Теперь, какой API можно использовать для получения строки «my-news» вместо названия последнего сообщения?
Я нашел следующую переменную, которая, кажется, работает.
$wp_query->queried_object->post_name
На самом деле это дружественная к URL версия названия страницы (slug), что я тоже искал. Это было проверено с шаблоном по умолчанию ( Twenty Ten ). Я действительно не уверен, почему две переменные, указанные ниже, не работают на моем сайте. Спасибо keatch за print_r()
отзыв .
Теперь, почему эта информация так глубоко спрятана?
источник
Ответы:
Глобальная переменная WordPress
$pagename
должна быть доступна для вас. Я только что попробовал с той же настройкой, которую вы указали.$pagename
определяется в файле wp-includes / theme.php внутри функцииget_page_template()
, которая, конечно, вызывается до анализа файлов вашей страницы, поэтому она доступна в любой точке внутри ваших шаблонов для страниц.Хотя это не выглядит документированным,
$pagename
переменная устанавливается, только если вы используете постоянные ссылки. Я предполагаю, что это потому, что если вы не используете их, WordPress не нуждается в слаге страницы, поэтому он не устанавливает его.$pagename
не устанавливается, если вы используете страницу в качестве статической главной страницы.Это код внутри /wp-includes/theme.php, который использует решение, которое вы указали, когда
$pagename
его нельзя установить:$ pagename = get_query_var ('pagename'); if (! $ pagename && $ id> 0) {// Если в качестве главной страницы установлена статическая страница, $ pagename не будет установлен. Получить его из запрашиваемого объекта $ post = $ wp_query-> get_queried_object (); $ pagename = $ post-> post_name; }
источник
$pagename = $wp_query->queried_object->post_name;
, просто не забудьте установитьglobal $wp_query;
раньше!Мой подход к получению имени слаг-страницы:
источник
Хорошо, вы должны захватить заголовок страницы перед циклом.
Проверьте ссылку: http://codex.wordpress.org/Function_Reference/WP_Query#Properties .
Сделать
перед циклом, чтобы увидеть все значения
$wp_query
объекта.источник
Это сработало для меня.
Если я правильно понимаю, вы хотите получить имя страницы на странице, на которой есть записи.
источник
Вы можете получить текущую страницу, сообщение или пользовательский тип сообщения с помощью глобальной переменной
$post
:Примечание: в функции или классе вам нужно будет указать,
global $post;
прежде чем пытаться использовать$post
.Если у вас есть петли на вашей странице, убедитесь, что вы заканчиваете каждую петлю,
wp_reset_postdata();
чтобы$post
вернуться к отображаемому элементу по умолчанию (странице).Обратите внимание, что переменная 'post_title' также доступна для любого пользовательского цикла / запроса ... включая элементы меню и медиа-вложения ... все в WordPress является "постом".
источник
Если вы хотите получить доступ к текущей странице из вашего файла functions.php (то есть до цикла, до
$post
заполнения, до$wp_query
инициализации и т. Д.) У вас действительно нет другого выбора, кроме как обращаться к самим переменным сервера и извлечь запрашиваемую страницу из строки запроса.Обратите внимание, что это «тупое» решение. Например, он не знает, что страница со слагом «скоро будет» тоже есть
p=6
. И это предполагает, что ваши постоянные настройки установлены наpagename
(что они должны быть в любом случае!).Тем не менее, может быть полезным маленький трюк, если у вас есть контролируемый сценарий. Я использую это в ситуации, когда я хочу перенаправить незарегистрированных посетителей на страницу «скоро»; но я должен убедиться, что я не бросаю их в страшный «цикл перенаправления», поэтому мне нужно исключить страницу «скоро» из этого правила:
источник
Я полагаю, что у темы стартера Roots есть фантастическая функция, чтобы получить текущий заголовок страницы. Это очень легко взломать, охватывает все основания и может быть легко использовано с
wp_title
крючком.источник
Попробуй это:
источник
Я придумал более простое решение.
Получить возвращаемое значение имени страницы из wp_title (). Если пусто, напечатайте имя домашней страницы, в противном случае выведите значение wp_title ().
Не забудьте удалить разделение с помощью первого аргумента, а затем установить для отображения значение false, чтобы использовать его в качестве входных данных для переменной. Затем просто вставьте код между тегами заголовка и т. Д.
Это сработало для меня и гарантировало, что первое объявлено в разделе, где вы хотите извлечь
$title
, это может быть настроено для возврата различных переменных.источник
Нам просто нужно использовать глобальную переменную "post":
Это будет повторять текущую страницу / заголовок сообщения.
источник
Использование:
источник
Это кажется самым простым в использовании:
источник
Показать заголовок до начала цикла:
источник
Один из вариантов, если вы ищете реальную запрашиваемую страницу, а не идентификатор страницы или слаг, - перехватить запрос:
В пределах вашей функции у вас есть доступ к объекту $ wp, и вы можете получить либо имя страницы, либо имя сообщения с помощью:
Если, с другой стороны, вам действительно нужны данные поста, первое место для их получения (и, возможно, в этом контексте, лучшее):
Наконец, я понимаю, что это, вероятно, не был вопрос ОП, но если вы ищете имя страницы администратора , используйте глобальный
$pagenow
.источник
В WordPress Loop :
Это покажет вам название текущей страницы.
Для справки: get_the_title ()
источник
Вот моя версия:
get_query_var ('pagename') просто давал мне слаг страницы. Таким образом, вышеприведенный текст заменяет все тире и делает первую букву каждого слова заглавной, чтобы его можно было использовать в качестве заголовка.
источник
Вот что я использовал в 2018 году:
источник
Теперь я нашел эту функцию на кодеке WordPress ,
получить запрос
который является оберткой для
$wp_query->get_queried_object
.Этот пост направил меня в правильном направлении, но, похоже, ему нужно это обновление.
источник
Это также работает, если вы находитесь в functions.php. Это не лучший подход, так как вы должны использовать глобальный массив, но он работает.
Во-первых, нам нужно добавить фильтр. Должен существовать лучший фильтр для использования, чем template_include, но я не знаю всех из них. Пожалуйста, укажите мне на правильный.
Избегайте использования переменной напрямую
Теперь вы можете использовать функцию
get_current_page()
в любой другой части functions.php.источник