Как получить имя текущей страницы в WordPress? - PullRequest
154 голосов
/ 29 января 2011

Какой php-код можно использовать для получения имени текущей страницы в теме WordPress?

Все решения, которые я видел до сих пор (the_title(), get_page()->post_name, get_post() и т. Д.) Donне работает для страницы, содержащей записи записей.Они все вернут имя последней записи в блоге.

Другими словами, предположим, что у вас есть страница, созданная в WordPress с именем «Мои новости».Эта страница установлена ​​как «страница поста».Добавьте пару постов на страницу.Теперь, какой API можно использовать для получения строки "my-news" вместо названия последнего сообщения?

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

Я нашелследующая переменная, которая, кажется, работает.

$wp_query->queried_object->post_name

На самом деле это дружественная к URL версия названия страницы (slug), что я тоже искал.Это было проверено с шаблоном по умолчанию (двадцатка).Я действительно не уверен, почему две переменные, указанные ниже, не работают на моем сайте.Спасибо keatch за подсказку print_r().

Теперь, почему эта информация так глубоко спрятана?

Ответы [ 19 ]

4 голосов
/ 27 октября 2011

    $title = get_the_title($post); 
    $parent_title = get_the_title($post->post_parent);

    echo $title;
    echo $parent_title;

Надеюсь, это поможет!;)

3 голосов
/ 30 января 2014

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

<?php single_post_title(); ?>
2 голосов
/ 24 мая 2017

Показать заголовок перед началом цикла:

$page_title = $wp_query->post->post_title;

Спасибо

2 голосов
/ 19 декабря 2013

в пределах цикла

<code><pre>
if ( have_posts() ) : while ( have_posts() ) : the_post();
/******************************************/
echo get_the_title();
/******************************************/
endwhile; endif;

Это покажет вам название текущей страницы. Для справки http://codex.wordpress.org/Function_Reference/get_the_title

1 голос
/ 07 февраля 2014

Вот моя версия:

$title =ucwords(str_replace('-', ' ', get_query_var('pagename')));

get_query_var ('pagename') просто давал мне слаг страницы. Таким образом, вышеприведенный текст заменяет все тире и делает первую букву каждого слова заглавной, чтобы его можно было использовать в качестве заголовка.

1 голос
/ 03 сентября 2011

Один из вариантов, если вы ищете реальную запрашиваемую страницу, а не идентификатор страницы или слаг, это перехватить запрос:

add_action('parse_request', 'show_query', 10, 1);

Внутри вашей функции у вас есть доступ к $ wpобъект, и вы можете получить либо имя страницы или имя сообщения с помощью:

function show_query($wp){
     if ( ! is_admin() ){ // heck we don't need the admin pages
         echo $wp->query_vars['pagename'];
         echo $wp->query_vars['name'];
     }
}

Если, с другой стороны, вам действительно нужны данные записи, первое место, чтобы получить их (и, возможно, в этом контексте,самое лучшее):

add_action('wp', 'show_page_name', 10, 1);

function show_page_name($wp){
     if ( ! is_admin() ){
        global $post;
        echo $post->ID, " : ", $post->post_name;
     }
}

Наконец, я понимаю, что это, вероятно, не был вопрос ОП, но если вы ищете имя страницы Admin , используйте глобальный $pagenow.

0 голосов
/ 06 декабря 2018

Это то, что я использовал в 2018 году:

<section id="top-<?=(is_front_page() ? 'home' : basename(get_permalink()));?>">
0 голосов
/ 21 июня 2013

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

1- Сначала нам нужно добавить фильтр.Должен существовать лучший фильтр для использования, чем template_include, но я не знаю всех из них.Пожалуйста, укажите мне на право.

add_filter( 'template_include', 'var_template_include', 1000 );
function var_template_include( $template ){
    global $wp_query;
    $GLOBALS['current_page'] = $wp_query->get_queried_object()->post_name;
    return $template;
}

2 - Избегайте прямого использования переменной

function get_current_page( $echo =  false ) {
    if( !isset( $GLOBALS['current_page'] ) )
        return false;
    return $GLOBALS['current_page'];
}

3 - Теперь вы можете использовать функцию get_current_page() в любой другой частиfunctions.php.

0 голосов
/ 23 мая 2012

Я нашел сейчас в Wordpress Codec эту функцию:

получить запрос http://codex.wordpress.org/Function_Reference/wp_list_pages

, который является оберткой для $wp_query->get_queried_object.Этот пост направил меня в правильном направлении, но, похоже, ему нужно это обновление.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...