WordPress에서 현재 페이지 이름을 얻으려면 어떻게 해야 합니까?
WordPress 테마에서 현재 페이지 이름을 검색하기 위해 사용할 수 있는 PHP 코드는 무엇입니까?
지금까지 본 모든 솔루션:
the_title()
get_page()->post_name
get_post()
- 기타.
단, 투고 엔트리가 있는 페이지에서는 사용할 수 없습니다.모두 최신 블로그 엔트리의 이름을 반환합니다.
WordPress에서 "My News"라는 이름의 페이지가 생성되었다고 가정해 보십시오.이 페이지는 "게시 페이지"로 설정됩니다.페이지에 투고를 몇 개 추가합니다.그러면 최신 게시물 이름 대신 어떤 API를 사용하여 "my-news" 문자열을 검색할 수 있을까요?
나는 효과가 있는 것으로 보이는 다음과 같은 변수를 발견했다.
$wp_query->queried_object->post_name
이것은 실제로 제가 찾고 있던 페이지명(slug)의 URL 친화 버전입니다.이는 기본 템플릿(Twenty Ten)을 사용하여 테스트되었습니다.아래 두 변수가 제 사이트에서 작동하지 않는 이유를 잘 모르겠습니다.팁을 준 키치 덕분에.
그런데 왜 이 정보가 그렇게 깊숙이 숨겨져 있는 걸까요?
변수 WordPress " "$pagename
이용하실 수 있을 겁니다.방금 말씀하신 것과 같은 설정으로 시도했습니다.
$pagename
「wp-disc/disc」는, php 함수내의 「wp-disc/disc」입니다get_page_template()
물론 페이지 테마 파일이 해석되기 전에 호출되므로 페이지 템플릿 내의 어느 지점에서나 사용할 수 있습니다.
되어 있지 것 만, 「 」는, 「 」를 참조해 주세요.
$pagename
var permalinks를 사용하는 됩니다.사용하지 않으면 WordPress는 페이지슬래그가 필요없기 때문에 셋업이 되지 않기 때문인 것 같습니다.$pagename
페이지를 정적 선두 페이지로 사용할 경우 설정되지 않습니다.
- , / wp - / / wp - / / -theme 내theme 내php 내php php you php php php php 、 php 、 php 、 php 、 php php 、 php you 、 php php you you you you 。
$pagename
설정할 수 없습니다.
--
if ( !$pagename && $id > 0 ) {
// If a static page is set as the front page, $pagename will not be set. Retrieve it from the queried object
$post = $wp_query->get_queried_object();
$pagename = $post->post_name;
}
이 페이지의 슬래그 이름을 얻기 위한 나의 접근법:
$slug = basename(get_permalink());
<?php wp_title(''); ?>
이건 나한테 효과가 있었어.
제가 제대로 이해했다면, 당신은 투고 항목이 있는 페이지에서 페이지 이름을 얻기를 원합니다.
좋아, 루프하기 전에 페이지 제목을 잡아야 해.
$page_title = $wp_query->post->post_title;
http://codex.wordpress.org/Function_Reference/WP_Query#Properties 를 참조해 주세요.
을 실행합니다.
print_r($wp_query)
가 하기 전에 값을 .$wp_query
★★★★★★ 。
변수인 「」, 「」로 취득할 수 .$post
:
echo $post->post_title
주의: 함수 또는 클래스에서 다음을 지정해야 합니다.global $post;
사용하려고 하기 전에$post
.
페이지에 루프가 있는 경우는, 각 루프를 반드시wp_reset_postdata();
세팅하다$post
표시된 기본 항목(페이지)으로 돌아갑니다.
'post_title' 변수는 모든 커스텀루프/쿼리에도 사용할 수 있습니다.메뉴 항목 및 미디어 첨부 파일 포함...WordPress의 모든 것은 '포스트'입니다.
「포스트」글로벌 변수를 사용하면 됩니다.
global $post;
echo $post->post_title;
현재 페이지/게시 제목을 반영합니다.
기능 내에서 현재 페이지에 액세스하려는 경우.php 파일(루프 전, 이전)$post
이 입력되기 전에$wp_query
is initialized, etc.) 서버 변수 자체에 액세스하여 쿼리 문자열에서 요청된 페이지를 추출할 수 밖에 없습니다.
$page_slug = trim( $_SERVER["REQUEST_URI"] , '/' )
이것은 「덤」솔루션이라는 점에 주의해 주세요.예를 들어, 민달팽이 'coming-soon'이 있는 페이지도 모른다.p=6
또한 permalink 설정이 다음과 같이 설정되어 있는 것을 전제로 하고 있습니다.pagename
(어쨌든 그래야지!)
그래도 시나리오가 통제된 경우 유용한 속임수가 될 수 있습니다.로그인이 되지 않은 방문자를 "coming soon" 페이지로 리다이렉트하고 싶은 상황에서 사용하고 있습니다.단, "coming soon" 페이지는 이 규칙에서 제외해야 합니다.
global $pagenow;
if (
! is_admin() &&
'wp-login.php' != $pagenow &&
'coming-soon' != trim( $_SERVER["REQUEST_URI"] , '/' ) &&
! is_user_logged_in()
){
wp_safe_redirect( 'coming-soon' );
}
Roots 스타터 테마는 현재 페이지 제목을 얻을 수 있는 환상적인 기능을 가지고 있다고 생각합니다.매우 해킹이 용이하고 모든 베이스를 커버하며 쉽게 사용할 수 있습니다.wp_title
갈고리를 채우다
/**
* Page titles
*/
function roots_title() {
if (is_home()) {
if (get_option('page_for_posts', true)) {
echo get_the_title(get_option('page_for_posts', true));
} else {
_e('Latest Posts', 'roots');
}
} elseif (is_archive()) {
$term = get_term_by('slug', get_query_var('term'), get_query_var('taxonomy'));
if ($term) {
echo $term->name;
} elseif (is_post_type_archive()) {
echo get_queried_object()->labels->name;
} elseif (is_day()) {
printf(__('Daily Archives: %s', 'roots'), get_the_date());
} elseif (is_month()) {
printf(__('Monthly Archives: %s', 'roots'), get_the_date('F Y'));
} elseif (is_year()) {
printf(__('Yearly Archives: %s', 'roots'), get_the_date('Y'));
} elseif (is_author()) {
$author = get_queried_object();
printf(__('Author Archives: %s', 'roots'), $author->display_name);
} else {
single_cat_title();
}
} elseif (is_search()) {
printf(__('Search Results for %s', 'roots'), get_search_query());
} elseif (is_404()) {
_e('Not Found', 'roots');
} else {
the_title();
}
}
이것을 시험해 보세요.
$pagename = get_query_var('pagename');
나는 더 간단한 해결책을 생각해냈다.
반환된 페이지 이름 값을 wp_title()에서 가져옵니다.빈 경우 홈페이지 이름을 인쇄하고 그렇지 않으면 wp_title() 값을 에코합니다.
<?php $title = wp_title('', false); ?>
첫 번째 인수로 구분한 후 display를 false로 설정하여 변수에 대한 입력으로 사용하십시오.그리고 머리글 태그 사이에 코드를 끼워 넣으세요.
<?php if ( $title == "" ) : echo "Home"; else : echo $title; endif; ?>
그것은 나에게 효과가 있었고 당신이 추출하고 싶은 섹션에 첫 번째가 선언되도록 했다.$title
다른 변수를 반환하도록 조정할 수 있습니다.
용도:
$title = get_the_title($post);
$parent_title = get_the_title($post->post_parent);
echo $title;
echo $parent_title;
이것이 가장 사용하기 쉬운 것 같습니다.
<?php single_post_title(); ?>
루프가 시작되기 전에 제목을 표시합니다.
$page_title = $wp_query->post->post_title;
페이지 ID 또는 slug가 아닌 실제 쿼리된 페이지를 찾는 경우 다음 옵션 중 하나는 쿼리를 가로채는 것입니다.
add_action('parse_request', 'show_query', 10, 1);
함수 내에서 $wp 오브젝트에 액세스 할 수 있으며 pagename 또는 post name 중 하나를 다음과 같이 얻을 수 있습니다.
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;
}
}
마지막으로, 이것이 OP의 질문이 아니라는 것을 깨달았습니다만, Admin 페이지명을 찾으시는 경우는, 글로벌을 사용해 주세요.$pagenow
.
워드프레스 루프 내:
if ( have_posts() ) : while ( have_posts() ) : the_post();
/******************************************/
echo get_the_title();
/******************************************/
endwhile; endif;
현재 페이지 제목이 표시됩니다.
참고: get_the_title()
내 버전은 다음과 같습니다.
$title = ucwords(str_replace('-', ' ', get_query_var('pagename')));
get_bar_var pagename')에서 페이지 슬러그를 주고 있었습니다.따라서 위는 모든 대시를 대체하고 각 단어의 첫 글자를 대문자로 표시하므로 실제로 제목으로 사용할 수 있습니다.
2018년 현재, 저는 다음과 같이 사용하고 있습니다.
<section id="top-<?=(is_front_page() ? 'home' : basename(get_permalink()));?>">
워드프레스 코덱에서 이 기능을 찾았습니다.
입니다.$wp_query->get_queried_object
이 게시물은 저를 올바른 방향으로 이끌었지만, 이 업데이트가 필요한 것 같습니다.
이것은 functions.php 에 있는 경우에도 유효합니다.글로벌 어레이를 사용해야 하기 때문에 최적의 방법은 아니지만 동작합니다.
먼저 필터를 추가해야 합니다.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; }
변수를 직접 사용하지 않음
function get_current_page( $echo = false ) { if( !isset( $GLOBALS['current_page'] ) ) return false; return $GLOBALS['current_page']; }
이 기능을 할 수 .
get_current_page()
할 수 있습니다
언급URL : https://stackoverflow.com/questions/4837006/how-can-i-get-the-current-page-name-in-wordpress
'source' 카테고리의 다른 글
각도 - "내보낸 멤버 '관측 가능' 없음" (0) | 2023.03.13 |
---|---|
woo commerce에서 쿠폰 적용여부 확인 (0) | 2023.03.13 |
바인딩이 있는 ng-style 또는 style 속성어떤 게 더 나아요?어느 쪽이 빠릅니까?뭐가 다른데? (0) | 2023.03.13 |
반응 JS의 입력 요소 자동 포커스 (0) | 2023.03.13 |
ng-include 사용 시 범위 상실 (0) | 2023.03.13 |