워드 프레스는 루프 밖에 있는 페이지 ID다.
나는 워드 프레스의 루프 시작하기 전에 페이지 ID를 받고 싶다.나는을 사용하고 있어.
$page = get_query_var('page_id');
확실히...아무것도 반환합니다.
그냥 ID과에 대한 클래스를 추가한 페이지를 확인하려고요.<body>
쫓아다니다 이것을 토대로.
만약 당신이 꽤 permalinks,을 사용하고 있습니다.get_query_var('page_id')
작동하지 않습니다.
대신에,queried 개체 ID를 얻습니다.
세계에서
달러 wp_query
:
// Since 3.1 - recommended!
$page_object = get_queried_object();
$page_id = get_queried_object_id();
// "Dirty" pre 3.1
global $wp_query;
$page_object = $wp_query->get_queried_object();
$page_id = $wp_query->get_queried_object_id();
또한 그 또는 루프 내부 외부(두건의 사건을 처리하)은 WHO사무 총장의 ID가:제네릭 기능을 만들 수 있습니다.
<?php
/**
* @uses WP_Query
* @uses get_queried_object()
* @see get_the_ID()
* @return int
*/
function get_the_post_id() {
if (in_the_loop()) {
$post_id = get_the_ID();
} else {
global $wp_query;
$post_id = $wp_query->get_queried_object_id();
}
return $post_id;
} ?>
단순히 해 볼까요?
$page_id = get_the_post_id();
대신:이 글로벌달러 우편을 사용합니다.
global $post;
echo $post->ID;
만약 당신이 모든 수단을 동원해 그 자리 페이지(색인 페이지 대체할 때를 사용하여 정적 앞 페이지)때문에 이 항목을 수색한 다음 답은 이:.
if (get_option('show_on_front') == 'page') {
$page_id = get_option('page_for_posts');
echo get_the_title($page_id);
}
(Forst | Echo Word Press "Posts Page" 제목 - Tammyhart의 일부 코드)
페이지 중인데 작동하지 않는 경우:
$page_object = get_queried_object();
$page_id = get_queried_object_id();
PHP를 사용하여 permalink를 수동으로 구축하여 게시 ID를 검색할 수 있습니다.
// get or make permalink
$url = !empty(get_the_permalink()) ? get_the_permalink() : (isset($_SERVER['HTTPS']) ? "https" : "http") . "://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
$permalink = strtok($url, '?');
// get post_id using url/permalink
$post_id = url_to_postid($url);
// want the post or postmeta? use get_post() or get_post_meta()
$post = get_post($post_id);
$postmeta = get_post_meta($post_id);
(특히 쿼리 문자열을 삭제하기 때문에) 가능한 모든 퍼머링크를 포착하지는 못할 수 있지만, 사용 사례에 맞게 수정할 수 있습니다.
나는 다음과 같은 방법으로 그것을 해왔고, 그것은 나에게 완벽하게 작용했다.
처음에 header.php에 글로벌 변수를 선언하고 변경 전 게시물 또는 페이지 ID를 할당합니다.이는 LOUP에 의해 표시된 마지막 엔트리의 ID가 할당되기 때문입니다.
$GLOBALS['pageid] = $wp_query->get_queried_object_id();
또한 바닥글의 예시와 같이 템플릿의 아무 곳이나 사용합니다.php:
echo $GLOBALS['pageid];
루프 외부를 사용하여 확인할 수 있습니다.
이 함수는 페이지 전류에서 id를 가져옵니다.
get_the_ID();
아래 두 줄의 코드를 사용하여 현재 페이지 또는 게시 ID를 가져옵니다.
global $post;
echo $post->ID;
이것은 올바른 코드입니다.
echo $post->ID;
WordPress 루프에서 벗어나면 WordPress 메서드를 사용할 수 없으므로 pure php를 사용해야 합니다.
이 코드를 사용할 수 있습니다.그리고 반드시 도움이 될 것입니다:)
$page_id = @$_GET['page_id'];
if (!is_numeric($page_id)) {
// Then the uri must be in friendly format aka /my_domain/category/onepage/
// Try this
//$path = '/www/public_html/index.php/';
///$path = '/my_domain/category/onepage/';
$path = $_SERVER['REQUEST_URI'];
// Clean the uri
//$path = str_replace('/', '', $page);
$path = str_replace('.php', '', $path);
//$path = str_replace('?s=', '', $path);
$path = $path ? $path : 'default';
$path_len = strlen($path);
$last_char = substr($path, $path_len -1);
//echo $last_char;
$has_slash = strpos($last_char, "/");
//echo $has_slash;
if ($has_slash === 0) :
$path = substr($path, 0, $path_len -1);
elseif ($has_slash === null) :
$path = substr($path, 0, $path_len);
endif;
//echo "path: ".$path; // '/www/public_html/index'
$page = substr(strrchr($path, "/"), 1);
echo "page: ".$page; // 'index'
}
$my_page_id = 31;
$my_page = 'mypage';
//echo "page: ".$page;
//echo "page_id ".$page_id;
if($page_id == $my_page_id || $page == $my_page)
{
// your stuff....
}
맛있게 드세요!
언급URL : https://stackoverflow.com/questions/3127385/wordpress-get-the-page-id-outside-the-loop
'programing' 카테고리의 다른 글
어떻게 CentOS7에 MySQL루트 계정 비밀 번호를 바꾸도록? (0) | 2022.09.08 |
---|---|
PHP: 부모 클래스에서 자식 클래스의 함수를 호출하는 방법 (0) | 2022.09.08 |
MySQL에서 날짜 비교 (0) | 2022.09.08 |
Windows for Node.js 의존관계에서 Python 실행 (0) | 2022.09.08 |
약속 콜백에서 vue 데이터 변경 (0) | 2022.09.08 |