$ post-> ID가 잘못된 ID를 표시합니다
-
-
특정 ID를 얻으려는 것뿐입니까? 아니면 ID를 다루는 _ 일반적인 기능 _을 원하십니까?첫 번째 경우에는`get_option ( 'page_for_posts');`를 사용할 수 있습니다.Are you just trying to get that specific ID, or do you want to have some _general functionality_ dealing with the IDs? If the first is the case, you could use `get_option('page_for_posts');`.
- 1
- 2013-08-08
- tfrommen
-
메타 박스 값을 얻으려고했기 때문에 ID를 다루는 일반적인 기능은 어쨌든 이제 해결되었습니다. 시간 내 주셔서 감사합니다!I was trying to get metabox value, so general functionality dealing with the IDs, anyways it's resolved now, thanks for your time!
- 0
- 2013-08-08
- Wordpressor
-
비슷한 스레드가 있습니다 : https://wordpress.stackexchange.com/questions/150192/at-my-posts-archive-page-outside-the-loop-get-the-id-returns-the-top-most-poHere's a similar thread: https://wordpress.stackexchange.com/questions/150192/at-my-posts-archive-page-outside-the-loop-get-the-id-returns-the-top-most-po
- 0
- 2019-03-05
- Pikamander2
-
1 대답
- 투표
-
- 2013-08-08
<인용구>해당 페이지에서 $post-> ID는 주어진 첫 번째 블로그 게시물의 ID를 반환합니다. 페이지.
그게 작동합니다.
<인용구>$post
는 루프의 첫 번째 게시물로 설정됩니다. 단일 게시물 및 게시물 또는 페이지와 동일한 페이지. 아카이브 페이지에서는 결과 집합의 첫 번째 게시물입니다. 그리고 그것에 대해 생각해 보면 둘 다 정말 똑같습니다. 단일 게시물 및 페이지에는 예상 한 게시물 또는 페이지와 일치하는 결과가 하나만 있습니다.이제 까다로운 부분은 모든 루프를 제거하려고했습니다. 페이지,완전히 지워진 loop.php 파일,모든 위젯 비활성화 $post에 영향을 미쳤을 수 있으며 여전히 잘못된 ID를 반환합니다.
기본 쿼리는 템플릿이로드되기 전에 실행되고 해당 프로세스에서
<인용구>$post
가 설정됩니다. 템플릿에서 항목을 제거해도 변경되지 않습니다.힌트가 있습니까?
예. 적절한 루프 내부를 제외하고는
$post
에 의존하지 마십시오. 페이지 자체에 대한 정보가 필요하면 다음을 사용하십시오.$pobj = get_queried_object(); var_dump($pobj); // debugging
참조 :
http://codex.wordpress.org/Function_Reference/get_queried_object
On that page $post->ID returns the ID of first blog post for given page.
That is how it works.
$post
is set to the first post in the Loop. On single posts and pages that is the same as the post or page. On archive pages it is the first post in the result set. And if you think about that, both are really the same thing. Single posts and pages only have one result in the set which happens to match the post or page that you expect.Now, the tricky part, I've tried to remove all the loops from all my pages, totally erased loop.php file, disabled all the widgets that might have been affecting $post and it still returns the wrong ID.
The main query runs before your template loads and
$post
is set in that process. Removing things from the template won't change that.Any hints?
Yes. Don't rely on
$post
except inside a proper Loop. If you need information about the page itself use:$pobj = get_queried_object(); var_dump($pobj); // debugging
Reference:
http://codex.wordpress.org/Function_Reference/get_queried_object
-
영리합니다.이 솔루션에 대해 들어 본 적이 없습니다.Clever, I have never heard about this solution before.
- 0
- 2013-08-08
- Wordpressor
이것은 꽤 이상합니다.
이 코드 :
블로그 페이지 (/wp-admin/options-reading.php에 블로그로 설정된 페이지)를 제외하고 항상 올바른 ID를 표시합니다.
해당 페이지에서 $post-> ID는 주어진 페이지에 대한 첫 번째 블로그 게시물의 ID를 반환합니다.
이제 까다로운 부분은 내 모든 페이지에서 모든 루프를 제거하고 loop.php 파일을 완전히 지우고 $post에 영향을 미칠 수있는 모든 위젯을 비활성화했지만 여전히 잘못된 ID를 반환합니다.
힌트가 있습니까?
내index.php는 꽤 표준입니다 :
그리고 loop.php는 :
문제가 제가 header.php에서 ID를 가져 오려고한다는 것인가요?
네,
wp_reset_postdata()
도 도움이되지 않는 것 같습니다 :/