워드 프레스 코어 파일 수정


21

왜?

때때로 WordPress 자체 또는 플러그인의 동작을 변경하는 쉬운 수정은 플러그인 또는 WordPress의 파일을 직접 변경하는 것일 수 있습니다. 그러한 아이디어를 생각해 낼 때 일반적인 반응은 다음과 같습니다.

코어를 해킹하지 마십시오.

코어 파일을 변경하는 것이 일반적으로 나쁜 생각 인 이유는 무엇입니까?

치다?

그러나 때때로 사이트에 중요 할 수있는 작업은 핵심 파일을 변경하지 않고 좋은 방법으로 수행하기가 불가능합니다. 그러한 상황에서, 핵 해킹을 시작하기 전에 무엇을 알아야합니까?

방법?

모든 옵션을 고려했지만 유일한 해결책은 핵심 파일을 해킹하는 것입니다. 어떻게해야합니까? 코어를 변경하면 업데이트와 같은 워크 플로에 어떤 영향을 미칩니 까?


1
아직 해결 할 수없는 한 가지를 아직 찾지 못했기 때문에 코어를 해킹하라는 권장 사항에 크게 동의하지 않습니다. 프로덕션 사이트에 대한 비즈니스 해킹 코어를 보유한 유일한 사람들은 이미 WordPress 코어 팀에있을 수 있으므로이 주제에 대해 전혀 읽을 필요가없는 사람들입니다. 사람들에게이를 수행하는 방법을 설명하면 단순히 결정을 합리화하는 방법을해서는 안되는 100 명 중 99 명에게 도움을줍니다. 그리고 나는 그것이 가능하게 된 것을 정말로 싫어합니다. JMTCW.
MikeSchinkel

후속 조치로, 여기에 처음에는 "불가능합니다"라는 질문의 예가 ​​있습니다. 나는 wordpress.stackexchange.com/questions/972/#984 다음 과 같은 방법을 보여주는 예를 들었 습니다. 해킹 코어없이 수행하십시오.
MikeSchinkel

2
코어를 변경하면 업그레이드 할 때마다 변경 사항을 다시 수행해야하며 설치를 비표준으로 설정하여 사람들이 도움을주기 어렵습니다. 플러그인, 위젯, 템플릿, 후크 또는 워드 프레스가 제공하는 많은 방법 중 하나를 만들어 코어를 변경할 필요가 없습니다.
Wadih M.

와디가 맞습니다. 여러 가지 사항을 수정 / 개선 / 사용자 정의하기 위해 일부 핵심 파일을 변경했으며 변경 사항을 확인하고 패치를 새 파일에 적용해야하기 때문에 업그레이드 할 때 항상 좌절했습니다. 새 파일이 이전 파일과 너무 다르고 변경 위치가 더 이상 명확하지 않거나 전혀 존재하지 않는 경우 훨씬 더 실망 스럽습니다.
Synetech

1
내가 두려워했던 것처럼; 아니오 (예컨대 내 사이트 수정 등) 고리가 정제 때로는 때뿐만 버퍼링 출력 트릭위한 그 일이없는 후크 admin_body_class하고 admin_footer있는 포획 수단 전체 페이지 . 방금 시도해 보았고 관련 섹션을 검색하고 출력하기 전에 구문 분석하고 수정 해야하는 2MB 이상의 콘텐츠가 있습니다. 또는 한 줄의 코드를 오른쪽에 추가 my-sites.php하고 diff 도구를 사용하여 업데이트 후 패치를 적용 할 수 있습니다 (변경된 것으로 가정). 이와 같은 시나리오에서 코어 수정에 반대하는 것은 실제로 어렵습니다.
Synetech

답변:


21

코어 해킹 해야하는 경우 다른 사람이 확장 할 수있는 방식으로 코어 해킹하는 것을 고려하십시오.

동작 후크 추가

열 번 중 아홉 번은 do_action특정 파일에 추가 호출 만있는 경우 원하는 작업을 수행 할 수 있습니다. 이 경우 작업을 추가하고 문서화 한 다음 Trac 를 통해 패치를 제출하십시오 . 패치에 대한 정당한 이유가있는 경우 (즉, 패치를 사용하는 유일한 사람이 아님) 코어에 추가 할 수 있습니다.

다음으로,이 새로운 후크에 연결되고 필요한 기능을 수행하는 사용자 정의 플러그인 (릴리스 / 배포 할 필요가 없습니다!)을 빌드하십시오.

핵심 파일 리팩터링

다른 경우에는 다르게 동작하기 위해 코드 조각이 필요할 수 있습니다. 예를 들어 변수를 참조로 전달하거나 에코하지 않고 값을 반환하십시오. 시간을내어 코드를 리팩터링하여 필요한 작업을 수행하십시오. 그런 다음 Trac 를 통해 패치를 제출 하여 나머지 직원 이 작업을 통해 이익을 얻을 수 있도록하십시오.


여기서 개발중인 테마가 보이십니까? 해킹 코어가 반드시 아니오 일 필요는 없습니다. 대부분의 개발자가 새로운 사용자 또는 초보자 프로그래머에게 낙담 하지 않을 것입니다. 해킹 코어를 제안하는 것을 고려).

해킹 코어는 워드 프레스가 발전하고 발전하는 방식이지만 PHP를 배우거나 WP 파일 작업 경험이없는 사람에게는 위험합니다. 코어를 만지기 전에 플러그인으로 시작하십시오. 플러그인을 끊으면 플러그인을 빠르게 제거 할 수 있습니다 (필요한 경우 FTP를 통해 제거) ...하지만 코어를 끊으면 사이트에 잠재적으로 나쁜 일이 발생할 수 있습니다. 데이터베이스도 마찬가지입니다.

그러나 핵심 핵이 불가피한 상황이라면 변경하십시오. 또한 눈에 띄는 위치에 변경 사항을 게시하십시오 (블로그가 눈에 잘 띄면 충분할 수도 있습니다 ...하지만 Trac 은 커뮤니티 변경 사항이 다음 릴리스로 가져 오기 때문에 Trac을 제안 합니다). 변경 사항은 백여 개의 사이트에서 문제를 해결할 수있는 마법의 총알 일 수 있습니다. 따라서 사이트 구축에 도움이되는 커뮤니티에 기여하십시오.

변경 사항이 커밋되면 해킹이 핵심의 일부가되므로 나중에 걱정할 필요가 없습니다. 그렇지 않은 경우 적어도 3 개월 안에 WP를 업그레이드 한 후 핵을 다시 구현하는 방법에 대한 자세한 문서가 있습니다.


훨씬 더 나은 표현은 내 것 :)
hakre

3

코어를 해킹하지 마십시오.

이는 경험이 부족한 첫 번째 수준의 사용자를위한 제안이기 때문입니다. 해킹 코어는 설치를 중단하고 변경 사항이 업데이트 등을 유지하는지 확인할 수 없습니다.

물론 해킹 코어!

예를 들어 SVN과 같은 버전 관리 시스템을 사용하여 실제로 코어를 해킹 할 수 있습니다. 핵심 코드에 대한 변경 사항을 프로젝트 업데이트에 따라 유지할 수 있습니다. 또한 Wordpress 용 패치를 만들어 프로젝트로 보내는 데 도움이됩니다.

해킹 핵심은 ​​실제로 Wordpress를 발전시키는 것입니다.

고려 사항

전체 SVN을 설치하지 않고 변경 한 파일 (일부)을 여전히 알고있는 경우 Diff / Merge (win : WinMerge ) 또는 비교 기능 (예 : WinMerge ) 과 같은 더 낮은 수준의 도구를 사용할 수 있습니다 비교 플러그인이있는 메모장 ++ ). Linux에서는 동일한 작업을 수행하는 명령 줄 유틸리티를 쉽게 설치할 수 있습니다. Geany 편집기 BTW 멋진 쉘 통합되어 있습니다. .

어려운 작업에는 Eclipse PDT를 선호합니다. 그러나 그것은 빠른 편집이나 해킹이 아닙니다.

따라서 올바른 도구를 사용하고 코어 해킹을 관리하고 싶다면 핵심 방법입니다. 다른 Noob 사용자 서버에 남아있는 것을 해킹하는 경우 (예, Wordpress는 꽤 인기가 있습니다) 무언가를 깨 뜨리면 쉽게 버릴 수있는 플러그인을 제공하십시오.


해킹 코어는 결코 좋은 솔루션이 아닙니다. 못.
Fredy31

@ 프레디 31; WordPress 설치를 최신 상태로 유지하고 작동하며 안전하게 유지할 수있는 유일한 방법입니다. 또한 여기서 말하는 "장기" 는 Wordpress에 패치를 제공 한 다음 패치를받는 데 2 ​​년 이상이 걸리면 실제로 오래 걸립니다. 패치가없는 문제를보고하는 데 더 오래 걸립니다. 조심해
hakre

1
분명히 핵을 해킹하는 것은 번거롭지 만 여기에 대한 저항과 vitriol이 놀랍습니다. FOSS의 다른 모든 영역에서는 포크가 적극적으로 권장됩니다. WordPress를 사용자 정의하면 왜 끔찍한가요? RCS를 사용하여 트렁크의 최신 버전을 유지하면서 수정 된 버전의 프로그램을 작성함으로써 제안한 것처럼 수많은 다른 프로젝트가 정확하게 수행되는 것을 보았습니다. +1 명백한 경고를 주지만 실제로 그것이 가능하다는 사실을 말하고 최소한의 어려움으로 어떻게 할 수 있는지에 대한 명백한 제안을 해주신 것에 대해 +1.
Synetech

아, 그리고 나는 어린이 테마 가 정확히 이것을 한다는 것을 기억했습니다 ! 자식 테마를 만들 때 기본적으로 부모를 분기하고 부모가 업데이트 될 때마다 변경 내용을 자식에 수동으로 복사해야합니다. 따라서이 핵심 수정에 대한 증오가 받아 들여진 다른 동일한 WordPress 동작과 일치하지 않습니다.
Synetech

2

문제는 다음과 같습니다.

  1. 보안 업데이트 등으로 인해 코어를 업데이트 할 때마다 자동 업데이터를 실행하는 대신 수동으로 업데이트해야합니다.
    당신이 이것을 원한다면, 삶을 더 쉽게 만드십시오.
    • 모든 변경 사항을 공통 마커 (예 : // PATCH START// PATCH END)로 표시
    • WinMerge와 같은 도구를 사용하여 기존 소스와 새 소스를 비교하고 필요한 경우 변경 사항을 복사하십시오.
    • 복사하려는 코드 영역이 변경된 경우 조심하고 패치를 적절히 변경해야합니다.
    • 고객에게 비용을 청구 할 수없는 경우 이는 청구 불가능한 시간이 걸리는 '결코 끝나지 않는'작업입니다.
  2. 특정 방식으로 코어가 작동 할 것으로 예상되는 플러그인에서 비 호환성 문제가 발생할 수 있습니다. 추가 테스트가 필요합니다.

때때로 이것은 피할 수없는 100 %이지만, 거의 항상 다른 방법으로 달성하거나 시간을 소비하여 스펙을 변경할 수 있습니다. 유지 관리의 악몽 일뿐이며 많은 사람들이 적절한 솔루션을 찾는 대신 핵심 해킹을 원합니다.

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