플러그인에서 사용하기 위해 스크립트 및 / 또는 스타일을 등록 / 큐에 넣는 아이디어 방법은 무엇입니까?
최근에 간단한 코드로 사용자 아바타 / 그 라비타를 추가 할 수있는 간단한 플러그인 플러그인 을 만들었습니다 . 아바타 (정사각형, 원형 등)를 표시하는 다른 스타일 옵션이 있으며 CSS를 단축 코드 자체에 직접 넣기로 결정했습니다.
그러나 이제는 페이지에서 단축 코드를 사용할 때마다 CSS를 반복하기 때문에 이것이 좋은 접근 방법이 아니라는 것을 알고 있습니다. 이 사이트에서 몇 가지 다른 접근 방식을 보았으며 wp 코덱에는 고유 한 두 가지 예가 있으므로 가장 일관되고 가장 빠른 접근 방법을 알기가 어렵습니다.
현재 알고있는 방법은 다음과 같습니다.
방법 1 : 단축 코드에 직접 포함- 이것은 현재 플러그인에서 수행하고 있지만 코드를 반복하므로 좋지 않습니다.
class My_Shortcode {
function handle_shortcode( $atts, $content="" ) {
/* simply enqueue or print the scripts/styles in the shortcode itself */
?>
<style type="text/css">
</style>
<?php
return "$content";
}
}
add_shortcode( 'myshortcode', array( 'My_Shortcode', 'handle_shortcode' ) );
방법 2 : 조건부로 스크립트 또는 스타일을 큐에 넣는 데 클래스 사용
class My_Shortcode {
static $add_script;
static function init() {
add_shortcode('myshortcode', array(__CLASS__, 'handle_shortcode'));
add_action('init', array(__CLASS__, 'register_script'));
add_action('wp_footer', array(__CLASS__, 'print_script'));
}
static function handle_shortcode($atts) {
self::$add_script = true;
// shortcode handling here
}
static function register_script() {
wp_register_script('my-script', plugins_url('my-script.js', __FILE__), array('jquery'), '1.0', true);
}
static function print_script() {
if ( ! self::$add_script )
return;
wp_print_scripts('my-script');
}
}
My_Shortcode::init();
방법 3 : 사용 get_shortcode_regex();
function your_prefix_detect_shortcode() {
global $wp_query;
$posts = $wp_query->posts;
$pattern = get_shortcode_regex();
foreach ($posts as $post){
if ( preg_match_all( '/'. $pattern .'/s', $post->post_content, $matches )
&& array_key_exists( 2, $matches )
&& in_array( 'myshortcode', $matches[2] ) )
{
// css/js
break;
}
}
}
add_action( 'wp', 'your_prefix_detect_shortcode' );
방법 4 : 사용 has_shortcode();
function custom_shortcode_scripts() {
global $post;
if( is_a( $post, 'WP_Post' ) && has_shortcode( $post->post_content, 'myshortcode') ) {
wp_enqueue_script( 'my-script');
}
}
add_action( 'wp_enqueue_scripts', 'custom_shortcode_scripts');
Method 4: Using has_shortcode();
은 포스트 내용에 관계없이 단축 코드의 여러 용도의 단축 코드가있는 경우 스크립트와 스타일을 한 번로드 할 수 있도록하기 때문에 가장 좋습니다. 위젯이나 사이드 바에서 단축 코드 사용에는 작동하지 않을 수 있지만 확실하지는 않습니다. 플러그인 인 경우 스크립트를 짧은 코드로 묶지 않는 것이 좋습니다. 일부는 짧은 코드 대신 함수를 호출하여 원하는 출력을 얻을 수 있기 때문입니다.