새로운 WooCommerce 2.3.x에 의해 로드된 select2 스크립트/스타일을 언로드하는 방법?
저희는 테마 개발자이며 이미 워드프레스 테마에서 HTML의 SELECT 박스에 대한 SELECT2 (http://select2.github.io/) 스크립트를 사용하고 있습니다.방금 출시된 새로운 WooCommerce 2.3.x도 select2 스크립트를 사용합니다.그러나 이들은 여러 가지 다른 방식으로 스타일을 고유의 스타일(무엇보다도 !important tags)로 재정의합니다.
중요한 규칙을 사용하여 CSS 변경 사항을 모두 재선언할 수는 없습니다. 이것은 우리가 좋아하지 않는 많은 CSS 엉망이 될 것입니다.또한 이제 JS 스크립트가 2번 로드되고 때때로 충돌이 발생합니다(우커머스는 자체 select2 js를 로드하기 때문입니다).
제 질문은 테마 기능에서 우커머스 셀렉트 2 CSS 및 JS 파일을 비활성화하는 가장 좋은 방법은 무엇입니까?스크립트 버전과 스타일 파일을 사용하고 싶습니다(우커머스 선택 요소도 사용).
wp_dequeue_script, wp_deregister_script 및 스타일에 사용 가능한 동일한 기능을 사용하려고 했지만 도움이 되지 않습니다.이미 테마가 초기화된 후에 wocommerce가 스크립트/css를 추가하는 것을 보니 비활성화할 수 없습니다.
감사해요.
/class-wc-frontend-scripts에 로드된 코드입니다.테마 함수에서 비활성화해야 하는 php:
self::register_script( 'select2', $assets_path . 'js/select2/select2' . $suffix . '.js', array( 'jquery' ), '3.5.2' );
self::enqueue_script( 'select2' );
wp_enqueue_style( 'select2', $assets_path . 'css/select2.css' );
원래의 WooCommerce 파일을 변경하지 않고 테마 기능에서 이 CSS/JS 파일을 언로드하는 방법은 무엇입니까?
해결책을 찾았습니다.
add_action( 'wp_enqueue_scripts', 'mgt_dequeue_stylesandscripts', 100 );
function mgt_dequeue_stylesandscripts() {
if ( class_exists( 'woocommerce' ) ) {
wp_dequeue_style( 'select2' );
wp_deregister_style( 'select2' );
wp_dequeue_script( 'select2');
wp_deregister_script('select2');
}
}
최근 WooCommerce(v 3.2.1)에서 select2 스크립트를 포크하여 @Dmitry에 의한 위의 코드는 더 이상 작동하지 않습니다.나에게 효과가 있었던 새로운 코드는 아래와 같습니다.
add_action( 'wp_enqueue_scripts', 'agentwp_dequeue_stylesandscripts', 100 );
function agentwp_dequeue_stylesandscripts() {
if ( class_exists( 'woocommerce' ) ) {
wp_dequeue_style( 'selectWoo' );
wp_deregister_style( 'selectWoo' );
wp_dequeue_script( 'selectWoo');
wp_deregister_script('selectWoo');
}
}
선택한 필드의 복제를 받는 모든 사용자에게 적합합니다.Woocommerce가 다음에 전화를 걸어 문제가 있는 것 같습니다.
?wc-ajax=update_order_review
페이지가 로드된 후 각 선택 요소 바로 뒤에 select2 요소가 표시됩니다.
<span class="select2 select2-container ... >
이 범위는 드롭다운 아래에 나타나며 현재 선택한 옵션을 포함합니다.
추가를 해봤습니다.wp_dequeue_script( 'wc-checkout' );그의 코드에 따라, 스팬이 나타나는 것을 막았지만, 필요한 다른 기능도 막았습니다.
결국 css로 스팬을 숨겼습니다.
.woocommerce-checkout .select2-container {
display:none;
}
다음은 도움이 되거나 앞으로 나아갈 방법을 제공할 수 있는 요점입니다. https://gist.github.com/gregrickaby/2846416
또한 이것을 보세요.includes/class-wc-frontend-scripts.php스크립트가 어떻게 배열되어 있는지 확인합니다.
다음 URL에서 아래에 붙여넣은 코드를 복사했습니다. 이 코드는 개별 스타일의 큐를 푸는 방법을 보여주며, 이 또한 도움이 될 수 있습니다. http://docs.woothemes.com/document/disable-the-default-stylesheet/
// Remove each style one by one
add_filter( 'woocommerce_enqueue_styles', 'jk_dequeue_styles' );
function jk_dequeue_styles( $enqueue_styles ) {
unset( $enqueue_styles['woocommerce-general'] ); // Remove the gloss
unset( $enqueue_styles['woocommerce-layout'] ); // Remove the layout
unset( $enqueue_styles['woocommerce-smallscreen'] ); // Remove the smallscreen optimisation
return $enqueue_styles;
}
언급URL : https://stackoverflow.com/questions/28547598/how-to-unload-select2-script-styles-loaded-by-new-woocommerce-2-3-x
'programing' 카테고리의 다른 글
| npm 스크립트를 사용하여 js 파일을 어떻게 실행합니까? (0) | 2023.11.07 |
|---|---|
| 문자열이 null로 종료되는 이유는 무엇입니까?또는: null-terminal vs. 문자 + 길이 저장 (0) | 2023.11.07 |
| Wocommerce 카테고리 이미지 표시 - get_wocommerce_term_meta가 사용되지 않음 (0) | 2023.11.07 |
| AngularJS: 양식의 모든 양식 컨트롤을 비활성화하는 방법? (0) | 2023.11.07 |
| DataFrame의 파티셔닝을 정의하는 방법은 무엇입니까? (0) | 2023.11.07 |