प्लगइन्स में उपयोग के लिए स्क्रिप्ट और / या शैलियों को दर्ज करने का विचार तरीका क्या है?
मैंने हाल ही में एक शोर्ट के साथ उपयोगकर्ता अवतार / ग्रेवटर को जोड़ने के लिए एक प्लगइन सरल प्लगइन बनाया है । मेरे पास अवतार (चौकोर, गोल आदि) प्रदर्शित करने के लिए अलग-अलग शैली के विकल्प हैं और सीएसएस को सीधे शॉर्टकोड में डालने का फैसला किया।
हालाँकि, मुझे पता है कि यह एक अच्छा तरीका नहीं है क्योंकि यह हर बार सीएसएस को दोहराएगा जब पृष्ठ पर शोर्ट का उपयोग किया जाता है। मैंने इस साइट पर कई अन्य दृष्टिकोण देखे हैं और 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();
है कि सबसे अच्छा है क्योंकि यह सुनिश्चित करेगा कि स्क्रिप्ट और शैलियाँ एक बार लोड हो जाएँगी यदि पोस्ट सामग्री में शोर्ट के कई उपयोगों की परवाह किए बिना शोर्ट है। हालाँकि यह विगेट्स या साइडबार में शोर्ट के उपयोग के लिए काम नहीं कर सकता है, हालाँकि यह निश्चित नहीं है। यदि यह एक प्लगइन के लिए है, तो मैं आपको शॉर्टकोड के साथ स्क्रिप्ट को टाई करने की सलाह नहीं दूंगा क्योंकि कुछ वांछित आउटपुट प्राप्त करने के लिए शोर्ट के बजाय अपने फ़ंक्शन को कॉल कर सकते हैं।