테마에 맞는 전역 functions.php 파일이 있습니까?


11

모든 테마에 사용할 수있는 전역 종류의 functions.php 파일이 있습니까?

문제는 여기 있습니다 :

테마에서 functions.php 파일을 변경하면 두 가지 변경 사항을 처리해야합니다. 먼저 해당 테마의 업데이트를 처리해야합니다. 둘째, 사이트의 테마를 변경해야합니다.

따라서 테마의 functions.php를 변경하는 대신 테마와 무관 한 일부 functions.php 파일을 변경할 수 있습니까?


4
현상금이 정말로 필요한가요? 이 질문에는 이미 정답이 있습니다
onetrickpony

@Mohit Bumb이 a) 현상금을 제공하는 사람이고 b) 플러그인 사용을 제안한 첫 번째 사람이므로 담당자 점수 (뒤로)를 얻는 사람이어야한다고 말하고 싶습니다. IMO 현상금은 필요하지 않았습니다 (그리고 그가 실제로 그것을 포기해야한다는 것을 몰랐 습니다 ).
카이저

답변:


15

테마와 비 테마 코드의 차이점은 기술적 인 것이 아니라 조직적인 것입니다. 활성화 된 모든 코드는 결과 환경에 영향을 미치며 코드가로드 된 위치와 상관 없습니다.

코드가로드되는 곳은 여러 곳이며 WordPress 코어의 일부가 아닙니다.

  • wp-config.php 구성 파일
  • 활성 테마 (및 하위 테마의 상위)
  • 활성 플러그인
  • 플러그인을 사용해야합니다
  • 드롭 인 (이들은 다소 진보되어 있으며 매우 구체적인 목적을 제공함)

테마의 일부가되어서는 안되는 고유 코드의 일반적인 위치는 플러그인을 만드는 것입니다. 다른 접근법은 일반적인 경우의 이점이 없지만 일반적인 플러그인의 관리 인터페이스를 통한 관리 (관리 영역을 통한 관리) 및 기술적 (활성화 / 비활성화 / 제거 이벤트) 편의를 상실합니다.


귀하와 @kaiser 모두 +1 정답은 1)에 사용자 정의 기능을 수용 할 하위 테마 작성 functions.php또는 2) 해당 기능을 수용 할 수있는 사용자 정의 플러그인을 작성하여 다양한 테마간에 이식 가능하다고 생각합니다.
Chip Bennett

질문 이후 @Chip은 테마를 전환 할 때 코드 보존에 대해 묻습니다. 자식 테마는 적합하지 않습니다. 하위 테마 인 테마로 전환하려면 어떻게합니까? 플러그인은 주어진 요구 사항에 가장 적합합니다.
Rarst

그렇기 때문에 두 사람 모두에게 투표했습니다. :) 그러나 테마를 전환 할 때 여전히 하위 테마를 사용할 수 있습니다 . Template:Child Theme 's에서 태그를 적절 하게 변경하기 만하면 style.css됩니다.
칩 베넷

@ 칩 당신은 내 요점을 얻지 못했습니다. 하위 테마를 사용하려면 어떻게합니까? 내 코드로 Twenty Eleven의 하위 테마를 만듭니다. 그런 다음 Twenty Eleven (또는 다른 부모)의 자식 테마 인 테마로 전환하고 싶습니다. 두 개의 하위 테마를 수동으로 병합하는 것 외에는 경로가 없습니다. 다음에 테마를 변경하면 병합 해제. 엉망입니다.
Rarst

나는 이것을 위해 반드시 사용해야합니다. 나는 테마를 통해 사용 가능한 기능, 후크 및 단축 코드를 추가하는 빠르고, straighforward 방법이 발견
chiliNUT

6

글쎄, 그것은 실제 문제이며 많은 사람들이 테마를 바꿀 때 직면하지만 간단한 해결책이 있습니다.

해당 기능을 functions.php가 아닌 새 페이지에 추가하고 yousitename + timestamp 또는 원하는 이름과 같은 고유 한 이름을 지정하십시오. 동일한 이름의 폴더를 압축하고 플러그인으로 업로드하면 비활성화 할 때까지 확실히 작동합니다 .

다음과 같이 해당 플러그인의 이름을 지정하는 것을 놓치지 마십시오.

/*
Plugin Name: XYZ
*/

3

@MBTheDeveloper 답변에 추가하여.

다른 옵션은 다음과 같습니다.

  1. 현재 테마에 대한 하위 테마를 만들고이 테마에서 functions.php 파일을 사용하십시오 ( "모범 사례").
  2. 사용 include하여 테마의는 PHP 파일을 기능 및 사용자 정의 코드를 포함하는 사용자 정의 function.php 파일을로드합니다.

2

테마의 functions.php 파일에서 사이트를 변경하지 마십시오.

대신 사이트 별 플러그인을 작성하십시오. "ottopress.com"과 같은 사이트의 도메인 이름을 사용하고 싶습니다. 그런 다음 스 니펫을 해당 플러그인에 넣고 해당 사이트에서만 활성화하십시오.

또는 관련 변경 사항이있는 경우 해당 변경 사항을위한 특정 플러그인을 작성하십시오. 필요한 경우 관련 코드 비트를 켜거나 끌 수있는 옵션이 제공됩니다.


2

일부 설명

먼저 테마에서 functions.php의 목적을 이해해야합니다. Functions.php는 기본적으로 Wordpress에 의해 자동으로로드되는 이름이없는 플러그인 파일입니다. 워드 프레스는 워드 프레스 프론트 엔드 페이지와 백엔드 (관리자) 페이지에 대한 현재 테마의 function.php를로드합니다.

플러그인은 이름이 있고 다른 플러그인과 테마에 관계없이 활성화 / 비활성화 될 수 있다는 점을 제외하고 플러그인과 functions.php 사이에는 차이가 없습니다. funtions.php는 현재 테마에 첨부되어 있으며 다른 테마로 전환하면 Wordpress는 새로운 테마의 functions.php를 사용하고 사용자 정의 수정으로 이전 functions.php를 사용하지 않습니다.

테마 업데이트는 functions.php를 덮어 쓰므로 사용자 정의 수정을 별도의 코드 파일에 넣고 fucntions.php에 포함하더라도 업데이트 할 때마다 포함 행을 추가해야합니다.

일반적으로 functions.php에 들어가는 코드 유형 :

  • 테마의 템플릿 파일에 사용되는 함수.
  • 테마 옵션
  • 사이드 바
  • 탐색 메뉴
  • 게시물 형식
  • 미리보기 이미지 게시
  • 현재 테마에만 관련된 모든 코드

테마를 전환하더라도 사용자 지정 수정 내용을 유지하려는 경우 이 경우 테마를 전환하면 하위 테마가 작동하지 않으므로 하위 테마의 functions.php는 사용되지 않습니다.

해결책

@Otto가 권장하는 유일한 해결책은 플러그인 파일을 만드는 것입니다. 사이트 별 플러그인을 생성하기 위해 취할 수있는 방법은 'wp-content / plugins'에 사이트 이름으로 폴더를 생성하고 플러그인 파일을 생성하는 것입니다.

왜 플러그인 파일인가? 단일 플러그인 파일이 아닙니다.

별도의 플러그인 파일에서 코드와 관련된 사이트 관련 기능을 그룹화 하고 모든 플러그인 파일에 플러그인 헤더 를 추가하여 Wordpress에서 별도의 플러그인으로 인식하도록하십시오. 그런 다음 모든 것을 손상시키지 않고 사이트의 다양한 기능을 활성화 / 비활성화 할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.