2016-11-14 1 views
2

ACF 플러그인이 비활성화되거나 설치되지 않은 경우 내 테마에 fatal error이 나타나지 않도록하고 싶습니다.WordPress : 플러그인 설치 여부 확인 (ACF)

플러그인의 주요 기능은 get_field()입니다. 나는 확인하기 위해 내 functions.php이 코드를 작성 :

if (!function_exists('get_field')) { 
    function get_field() { 
    echo '<span>plugin ACF is not installed</span>'; 
    } 
} 

이 허용 연습입니다 가르쳐주세요?

답변

2

우선,이 플러그인은 주요 플러그인 기능이 아니며 그 중 하나입니다. 아마도 가장 많이 사용되는 테마는 플러그인 사용자입니다. 또 다른 하나는 the_field()입니다. 실제로 값 (get_field()을 반환합니다)을 인쇄합니다.

맞춤 함수를 정의하는 관행에 대해서는 괜찮습니다. 그러나 ACF 필드가 예상되는 모든 장소에서 긴 메시지를 인쇄하지 않습니다. 그 중 일부는 짧을 수 있으며이 메시지는 레이아웃을 손상시킵니다. 더 짧은 것을 인쇄하는 것이 더 좋습니다.

또한 function_exists은 이 아닌 올바른 검사입니다. ACF는 테마 프레임 워크 또는 다른 플러그인이있는 라이브러리로도 제공 될 수 있기 때문에 적절합니다.

또 다른 옵션은 프론트 엔드에 대한 ACF 종속성을 완전히 제거하는 것입니다. get_post_meta()으로 필드의 내용을 출력하고 ACF 플러그인이 프론트 엔드에서 완전히로드되지 않도록 할 수 있습니다. 자세한 내용은이 두 게시물을 참조 :

http://www.billerickson.net/code/disable-acf-frontend/

http://www.billerickson.net/advanced-custom-fields-frontend-dependency/

+0

정말 멋지다! 나는 이것에 대해 독자적으로 생각하지 않았을 것입니다. 이제 조금 더 나은 품질의 코드를 작성하겠습니다. 당신의 경험에 감사드립니다! – Joe

1

예, 플러그인 기능이 있는지 확인하는 좋은 방법입니다.

기능을 다시 선언 할 수 있기 때문에 is_plugin_active 기능을 사용해 플러그인을 활성화 할 수 있습니다.

나는 그 일을하는 주된 이유는 치명적 오류를 방지하는 것이라고 생각하기 때문에 어떤 방법 으로든 사용할 수 있습니다.

+0

ACF는 테마 프레임 워크 또는 다른 플러그인 내 라이브러리로 제공 될 수있다. 'function_exists()'는 좀 더 안전한 방법입니다. –

+0

정확하지만 테마 프레임 워크 또는 다른 플러그인 내의 라이브러리 인 경우 주제 또는 다른 플러그인에 의해 활성화 될 것으로 예상됩니다. –

관련 문제