2012-11-20 1 views
1

우선, "Override default php function"을 읽고 네임 스페이스가 내 필요를 충족시키지 못합니다. 나는 또한 PHP.net's override_function()을 들여다 보았다. 그러나 그것은 나의 문제도 나를 도울 수 없다.다른 파일/플러그인에서 호출되는 PHP 함수를 재정의 할 수 있습니까?

전자 상거래 솔루션으로 Jigoshop이라는 Wordpress 플러그인을 사용하고 있지만 경우에 따라 '단일 제품'페이지에 자체 구조를 적용해야하는 작업을 제거 할 수 없습니다. 플러그인 업데이트가 이전 변경 사항을 무효화하고 제거 할 수 있으므로 플러그인 파일 자체를 편집하고 싶지 않습니다. 기본적으로, 내 /themes/mytheme/functions.php 파일을 통해 출력을 제어하고 싶습니다.

원래 함수가 파일에 포함되어 있기 때문에 이전과 같은 '업데이트'이유에 대해 편집하고 싶지 않은 사람이 있습니까?

감사

(2012년 11월 21일) 편집 : 내가 지금처럼 내 functions.php 파일에 사용자 정의 기능이 : 이것은 본질적으로 내 자신의 구조를 적용 할 수 있습니다

function prepare_jigoshop_wrappers() { 
    remove_action('jigoshop_before_main_content', 'jigoshop_breadcrumb', 20); 
    add_action('jigoshop_before_main_content', 'custom_jigoshop_breadcrumb', 10); 
} 
add_action('wp_head', 'prepare_jigoshop_wrappers'); 

& 구성. 다른 기본 기능의 경우 조금 더 어렵습니다. 모든 함수 내에 포함 예를 들어, '수량 선택이', '장바구니에 추가'버튼과 '재고'는 _title, _price, _excerpt, _meta, _sharing & _add_to_cart의 좋아하는 호출 jigoshop_template_actions.php 파일에 jigoshop_template_single_summary을했다.

이러한 순서가 표시되며 변경할 수 없습니다. 따라서, 나는 기본적으로 내가 잘이 플러그인을 모르는 function jigoshop_template_single_summary() {...}

+0

은 아마 당신이 당신의 문제의 세부 사항에 자세히 설명 할 수있다. 플러그인 함수가 제공하는 출력은 무엇이며 어떻게 수정 하시겠습니까? – Jrod

+0

안녕하세요 @ 자로드, 위의 편집 참조하십시오. 감사합니다 – carmat

답변

0

를 재정의하고 싶지만 아마도 이것은 당신이 PHP를 (또한 공통 ..)의 일부 기능 Theming with Jigoshop

재정의 필요 어떤 좋은 방법이 없다 . 플러그인이 기능에 연결하지 못하는 경우 대체 플러그인을 사용하거나 핵심 코드를 다시 작성하는 것이 더 좋은 경우가 있습니다 ..

+0

감사합니다 @ Philipp. Jigoshop 지침을 따르고 있지만 원하는대로 정확하게 할 수 있도록 마크 업을 사용자 정의하는 것이 더 쉬웠 으면 좋겠습니다. 더 많은 정보로 원래 질문을 업데이트했습니다. 그래도 고마워. – carmat

1

PECL 확장을 살펴볼 수 있습니다. PHP.NET에서 필요한 것을 할 수 있습니다.

runkit_function_redefine

(PECL의 runkit> = 0.7.0)에서 모든 재정 관련이없는 다른 해결책이있을 수 있으므로

+0

runkit은 기본적으로 작동하지 않습니다. PHP 5.2를 기반으로하는 안정적인 릴리스는 없으며 5.3 이상은 전혀 릴리스되지 않았습니다. – duskwuff

+0

면책 조항, 사용하지는 않았지만 공식 런킷 확장은 현재 http://github.com/zenovich/runkit에서 호스팅됩니다. 현재 마스터 브랜치는 모든 최신 PHP 버전을 4.4에서 5.3 및 5.4까지 완벽하게 지원합니다. – Gary

+0

감사합니다. 그래도 문제는, 내가 runkit 기능으로 그렇게 할 수 있습니까? 'runkit_function_redefine ('original_function', $ args, 'my_new_function'); ' 나는 또한 더 많은 정보를 가지고 질문을 갱신했다. 건배 – carmat