programing

특정 페이지/게시용 Wordpress 플러그인 비활성화

megabox 2023. 2. 7. 19:43
반응형

특정 페이지/게시용 Wordpress 플러그인 비활성화

특정 페이지에서 플러그인(액티브한 것)을 비활성화하는 정말 효과적인 방법을 알고 있는 사람이 있습니까?웹 사이트의 일부 페이지에는 실제로 필요하지 않은 플러그인이 있으며 웹 사이트의 로드 속도를 늦추거나 다른 파일과 충돌할 수 있는 CSS 및 JavaScript 파일이 많이 포함되어 있습니다.

플러그인의 코드등을 조작할 수 있는 것은 알고 있습니다만, 별로 효과가 없습니다.

좋은 생각 있어요?

잘 부탁드립니다!

아이디어는 이렇습니다.

 add_filter( 'option_active_plugins', 'lg_disable_cart66_plugin' );

 function lg_disable_cart66_plugin($plugins){

      if(strpos($_SERVER['REQUEST_URI'], '/store/') === FALSE && !is_admin() ) {
         $key = array_search( 'cart66/cart66.php' , $plugins );
         if ( false !== $key ) unset( $plugins[$key] );
      }

     return $plugins;
 }

p.s. 어떤 사람들은 당신이 이걸 넣어야 한다고 말한다.mu-plugins폴더입니다.

오래된 건 알지만 이 실이 바로 내가 필요했던 거야.

numediaweb의 답변에 대한 유일한 경고는 제거 작업이 추가 작업과 동일한 우선 순위를 필요로 한다는 것입니다.

플러그인의 후크

add_action('wp_print_styles', 'easy_fancybox_enqueue_styles', 999);
add_action('wp_enqueue_scripts', 'easy_fancybox_enqueue_scripts', 999);
add_action('wp_head', 'easy_fancybox', 999);

후크 제거 코드

function remove_easy_fancybox() {

     global $post;
     $ids = array(12,34,55);
     if(in_array($post->ID,$ids)):
          remove_action('wp_print_styles', 'easy_fancybox_enqueue_styles', 999);
          remove_action('wp_enqueue_scripts', 'easy_fancybox_enqueue_scripts',999);
          remove_action('wp_head', 'easy_fancybox', 999);

          wp_dequeue_script( 'jquery.fancybox' );
          wp_dequeue_script( 'jquery.easing' );
          wp_dequeue_script( 'jquery.mousewheel' );
          wp_dequeue_script( 'jquery.metadata' );
     endif;
}

add_action('wp_head', 'remove_easy_fancybox', 1);

http://codex.wordpress.org/Function_Reference/remove_action 에서

중요:후크를 삭제하려면 후크 추가 시 $function_to_remove 인수와 $priority 인수가 일치해야 합니다.이는 필터와 액션 모두에 적용됩니다.제거 실패 시 경고가 표시되지 않습니다.

도움이 될 수 있다고 생각하여 특정 포스트 ID에서만 작업을 수행하기 위한 if 문을 포함했습니다.

먼저 제거할 플러그인에 제외할 페이지를 설정하는 옵션 메뉴가 없는지 확인합니다.

둘째, 다음 예에 대한 플러그인 액션 후크를 찾습니다.

add_action('wp_head', 'easy_fancybox', 999);

이것은 워드프레스 헤더에 후크하는 쉬운 팬시박스 플러그인 예시입니다.이 기능을 제거하기 위해, 저는 이 기능을 당신의 시스템에 넣었습니다.functions.php그리고 그 전에wp_head();라고 부릅니다.

function remove_easy_fancybox() {

     remove_action('wp_head', 'easy_fancybox_enqueue_styles');
     remove_action('wp_head', 'easy_fancybox_enqueue_scripts');
     remove_action('wp_head', 'easy_fancybox');

     wp_dequeue_script( 'jquery.fancybox' );
     wp_dequeue_script( 'jquery.easing' );
     wp_dequeue_script( 'jquery.mousewheel' );
     wp_dequeue_script( 'jquery.metadata' );
}

add_action('wp_head', 'remove_easy_fancybox', 1);

프리 플러그인 Freesoul Deactivate Plugins를 사용하여 특정 페이지, 게시물, 커스텀 게시물 및 아카이브의 특정 플러그인을 비활성화할 수 있습니다.설정 페이지는 매우 간단합니다.

언급URL : https://stackoverflow.com/questions/6774424/wordpress-disable-plugin-on-specific-pages-posts

반응형