2010-01-12 5 views
3

나는 Worpress 기본 테마를 사용자 정의하여 진행 중입니다. 아카이브 링크의 형식을 지정하는 문제에 대해 생각해 보았습니다.Wordpress에서 테마로 wp_get_archives를 재정의하십시오.

기본 테마는 general-template.php에 정의 된 wp_get_archives 함수를 사용합니다. 함수의 출력은 사용자 정의 할 수 있지만 사용자 정의 할 수는 없습니다.

기본적으로 내 functions.php 파일에서 특정 기능을 다시 구현하여 원하는 모든 작업을 수행 할 수 있지만 Wordpress가 업데이트되면 회귀 문제가 발생하므로 주저합니다. wp_get_archives은 모든 하위 수준의 작업을 수행하여 DB 쿼리를 구성하고 DB 결과를 캐시합니다. 나는 할 수 있으면 이것을하는 것을 정말로 피하고 싶습니다.

또 다른 방법으로는 get_archives_link 필터를 작성하여 링크 HTML이 이미 포맷되어 있고 그것을 이해하기 위해 일련의 정규식을 실행해야합니다. 이것은 성능을 완전히 없애기 때문에 완전히 뒤로 향하는 것처럼 보입니다. 그런 다음 THRE 가지고 추가 개월의 문제가

$text = sprintf(__('%1$s %2$d'), $wp_locale->get_month($arcresult->month), $arcresult->year); 

:

<li><a href="/year/01">JAN</a></li> 
<li class="current"><a href="/year/02">FEB</a></li> 
<li>MAR</li> <!--no blog entries this month--> 
... 

를 지금까지 내가 wp_get_archives를 볼 수 앵커의 텍스트를 하드 코딩했습니다 여기

내가 출력이 원하는 것을 정확히 게시물이 없다면, 텍스트를 파싱하지 않고 오히려 더 선호 할 것입니다. 그렇다면 현재 클래스를 추가해야합니다 (URL이 .../2009/12 인 경우).

실제로 나는 wp_get_archives 사본을 사용하여 작동하는 솔루션을 얻었습니다. 이 일을하는 방법이며, 나는 아무것도 걱정하지 않습니까?

편집 나는 그것이 워드 프레스 테마에 대한 귀하의 오엔의 SQL을 작성하는 OK입니다 진짜 문제는 추측? 그리고 그것이 그렇다면 그렇게하는 데있어서 최선의 관행은 무엇입니까?

답변

1

활성 테마 내에서 functions.php 파일에 정의한 경우 일반적으로 회귀 문제가 있어서는 안됩니다.

그러나 기본 테마를 변경하는 경우에는 그렇지 않습니다. 전체 Wordpress 소스를 업로드하여 Wordpress를 업그레이드한다면 functions.php를 덮어 씁니다.

이 문제를 해결하려면 기본 테마가 포함 된 전체 폴더를 복제하십시오. 새 사본에서 style.css을 편집하고 2 행 (테마 이름)을 새 테마 이름으로 변경하십시오.

Theme Name: WordPress Default

워드 프레스 지금 당신은 당신의 마음 '콘텐츠를 편집 할 수있는 별도의 테마를 볼 수 있습니다.

+0

충분히 화가 났으므로 나는 Worpress를 업데이트 할 때 별도의 테마로 만들었으므로 압축되지 않습니다. 내가 염두에 두었던 회귀 문제는 데이터베이스 스키마 또는 캐싱 인터페이스의 변경 사항입니다. 늘어나는만큼 내가 이해할 수있는 SQL은 필터에 청소되고 그래서 그것은 SQL 주입 관련 보안 변경 사항이있을 것 같지가 않아. –

관련 문제