WordPress 프론트 페이지와 홈페이지
워드프레스는 훌륭한 CMS입니다. 당신은 그것으로 원하는 무엇이든 할 수 있습니다. 그러나 때로는 일부 기본 기능에 문제가 있을 수 있습니다. 예를 들어 테마와 플러그인에서 is_front_page 및 is_home WordPress 홈페이지를 조건부로 사용하고 있을 것입니다(조건부 태그 게시물에서 조건부 기능에 대해 자세히 알아볼 수 있습니다). 하지만 당신은 잘못하고 있어요!
홈페이지 설정
이러한 조건부 함수를 사용하면 홈페이지가 표시되고 있는지(is_home) 또는 홈페이지가 정적 페이지(is_front_page)를 사용하고 있는지 확인할 수 있습니다. 설정=> 읽기에서 이러한 동작을 정의할 수 있습니다.
플러그인이나 테마에서 이 기능을 사용하여 사용자 설정에 따라 내용을 표시하거나 변경할 수 있습니다. 그러나 당신은 큰 실수를 하고 있습니다. 정적 블로그 페이지를 고려하지 않는 것입니다. 홈페이지의 정적 페이지를 정의할 때 블로그 페이지도 정의할 수 있습니다. 블로그 페이지는 모든 게시물을 나열하기 위해 기본 WordPress 홈페이지를 대체합니다.
긴 이야기를 짧게 요약: is_front_page는 항상 is_home 이전에 테스트되어야 합니다. 그 이유는 다음과 같습니다.
작동 방식
1. 일반 설정:
기본 WordPress 홈페이지에는 최신 게시물이 나열됩니다.
- URL은 다음과 같습니다: website.com
- is_home은 TRUE를 반환합니다.
- is_front_page가 TRUE를 반환합니다.
여기서는 문제가 없습니다.
2. 정적 홈페이지:
홈페이지가 정적 페이지 중 하나를 사용하고 있습니다.
- URL은 여전히 website.com입니다.
- is_home은 FALSE를 반환합니다.
- is_front_page가 TRUE를 반환합니다.
정적 홈페이지에는 문제가 없습니다. is_front_page가 true를 반환합니다.
3. 정적 블로그 페이지
귀하의 페이지 중 하나에 모든 게시물이 나열되어 있습니다.
- URL은 website.com/pagename입니다.
- is_home : 참
- is_front_page : 거짓
여기서는 몇 가지 문제가 있을 수 있습니다. is_home이 TRUE를 반환하지만 이는 귀하의 홈페이지가 아닙니다. 메인 카테고리 아카이브처럼 모든 게시물을 나열하는 WordPress 페이지입니다.
조건부 태그 사용
플러그인이나 테마를 생성할 때 사용자가 해당 페이지 설정을 사용할 수 있다는 점을 고려해야 합니다. 따라서 is_home을 사용할 때마다 항상 이전에 is_front_page를 테스트해야 하며 이를 위해 항상 조건부 매개변수를 사용해야 합니다.
그렇지 않으면 일부 사용자에게 문제가 발생할 수 있습니다. 예를 들어 홈페이지 콘텐츠를 표시하기 위해 is_home만 테스트하는 경우 올바른 콘텐츠를 표시하지 않는 정적 홈페이지에 문제가 발생합니다.
올바른 방법은 다음과 같습니다.
if ( is_front_page() && is_home() ) {
// Default homepage ( both the front page and the recent posts page)
} elseif ( is_front_page() ) {
// Static homepage
} elseif ( is_home() ) {
// Blog page
} else {
// Everything else
}이것이 홈페이지와 블로그 페이지의 콘텐츠를 표시하거나 변경하는 유일한 (올바른) 방법입니다.
중요: 이러한 기능은 템플릿 파일이나 특정 작업 후크와 같이 WordPress가 로드된 후에만 작동한다는 점에 유의하세요. 이러한 조건문을 function.php에 덤프하고 작동할 것이라고 기대할 수는 없습니다.
당신은 어떤가요?
이미 이 문제가 발생했나요? 당신의 해결책은 무엇이었나요? 나는 그것에 대해 듣고 싶다!
