কীভাবে কেবলমাত্র নির্দিষ্ট পৃষ্ঠায় কোড অন্তর্ভুক্ত করবেন?


14

আমি প্লাগইন এবং শর্টকোড সম্পর্কে শিখছি। আমি লক্ষ্য করেছি যে আমি যখন আমার প্লাগইনটি সক্রিয় করি তখন এর কোডটি আমার সমস্ত পৃষ্ঠায় লোড হয়ে যায় - এমন পৃষ্ঠাগুলিতেও যা আমার শর্টকোড নেই have (আমি কনটেন্ট বনাম অ্যাডমিন পৃষ্ঠাগুলি বলতে চাইছি না)। কিছু সামগ্রী পৃষ্ঠায়, আমি একটি বিশেষ শর্টকোড এবং অন্যান্য সামগ্রী পৃষ্ঠাগুলি ব্যবহার করি, আমি করি না - তবে কোনও ক্ষেত্রে, প্লাগইনের কোডটি লোড হয়। আমি কীভাবে এটি তৈরি করব যাতে প্লাগইনটি কেবল এমন পৃষ্ঠাগুলিতে অন্তর্ভুক্ত থাকে যেখানে শর্টকড ব্যবহার করা হয়?

আরো বিস্তারিত:

ধরা যাক আমি একটি প্লাগইন পেয়েছি যা একটি লাইটবক্স তৈরি করে। আমি প্লাগইনটি সক্রিয় করি। আমার "কুল ইমেজস" পৃষ্ঠায় আমি লাইটবক্স তৈরি করতে শর্টকোড ব্যবহার করি। আমি যখন আমার "সম্পর্কে" পৃষ্ঠায় ভিউ উত্সটি যাচাই করি, যা লাইটবক্স শর্টকোড ব্যবহার করে না, আমি দেখি যে লাইটবক্স প্লাগইনের কোডটি লোড হয়েছে। আমি যদি আমার প্লাগইন লিখি তবে আমার পৃষ্ঠাগুলি দ্রুত লোড হবে যাতে এর কোডটি কেবল যেখানে প্রয়োজন হয় সেই পৃষ্ঠাগুলিতে লোড হয়। এটা কি সম্ভব? অন্যথায়, আমার অজান্তে পৃষ্ঠাগুলিতে প্রচুর প্লাগইন লোড হওয়ার কোড থাকবে। কোন ধারনা?


1
আপনি কি কিছু সজ্জিত করার চেষ্টা করছেন, বা শর্টকোডযুক্ত পৃষ্ঠাগুলিতে পিএইচপি স্ক্রিপ্ট চালানোর চেষ্টা করছেন?
mor7ifer

+1 @ m0r7if3r - আমি এটিও বুঝতে চাই
.. উপায়গুলি

@ mrOr7if3r, বার্তার জন্য ধন্যবাদ। উদাহরণস্বরূপ, ধরা যাক আমি একটি Google মানচিত্র প্লাগইন পেয়েছি। সেই প্লাগইনটি কি প্রতিটি পৃষ্ঠায় লোড করতে হবে - যে পৃষ্ঠাগুলি প্লাগইন ব্যবহার করে না? ধরা যাক আমার একটি "সম্পর্কে" পৃষ্ঠা রয়েছে যার এতে গুগল ম্যাপের শর্টকোড নেই। আমি যদি উত্স উত্সটিতে নজর রাখি, আমি দেখতে পাচ্ছি যে প্লাগইনটির কোডটি সেই পৃষ্ঠাটিতে লোড করা হয়েছিল (ইভেন্টটি আমি ব্যবহার করছি না যদিও)। প্লাগইনগুলির কোডগুলি কি প্রতিটি একক পৃষ্ঠায় লোড করতে হবে? ধন্যবাদ।
লক্ষ্মীদী

ভাল প্রশ্ন যা ইমো (নতুন) সর্বোত্তম অনুশীলনের দিকে পরিচালিত করে, ডাব্লুপি এখন আমাদের যে কোনও সময়ে স্ক্রিপ্টগুলি সজ্জিত করতে সক্ষম করে।
রাফেল

উত্তর:


9

ডাব্লুপি v3.3 আমাদের একটি পৃষ্ঠার মাঝখানে wp_enqueue_script চালানোর দক্ষতা দিয়েছে। টিকিট 9346

এটি আপনার জেএসকে আরও ভাল গ্রানুলারিটির সাথে অন্তর্ভুক্ত করা আরও সহজ করেছে (শর্টকডগুলি ব্যবহার করার সময়, কমপক্ষে)। এখানে, jquery কেবল তখনই অন্তর্ভুক্ত করা হবে যখন আমাদের শর্টকোড বরখাস্ত করা হয়।

function get_slideshow() {
  // Do some stuff...

  // Load up scripts right from within our shortcode function (requires WP 3.3+)
  wp_enqueue_script( 'jquery', array(), null, true  ); 

  return;
}
add_shortcode( 'cool_slideshow', 'get_slideshow' );

1
এটি করা উচিত, ইমো।
রাফেল

1
দুর্দান্ত, আমি বুঝতে পারি নি যে এখন কোনও পৃষ্ঠার মাঝখানে wp_enqueue_script চালানো সম্ভব। যখন প্রয়োজন হয় তখন স্ক্রিপ্ট / সিএসএস লোড করার জন্য বেশ পরিচ্ছন্ন উপায়!
রিক কারান

2

অ্যাডমিন ইউআই ভেরিয়েবলের জন্য পরীক্ষা করুন

একটি মেনু আইটেম একটি বিশেষ ক্ষেত্রে: মন্তব্যগুলি, কারণ তারা add_WHATEVER_(submenu)page()এপিআই ব্যবহার করে নিবন্ধভুক্ত হয় ।

// All need to be stated as beeing global
global $pagenow, $typenow, $hook_suffix, $parent_file, $submenu_file, $post_type_object;
if ( 'THE-OUTPUT.php' === $WHATEVER_YOU_CHOOSE_TO_CHECK )
    // do stuff

এগুলি নন-কনসেন্টেন্ট এবং হার্ড-কোডড ডাব্লুপি কোরে রয়েছে। মনে রাখবেন যে সমস্ত পৃষ্ঠায় সেট করা নেই।

পৃষ্ঠা-নির্দিষ্ট অ্যাডমিন ইউআই হুকগুলিতে প্রবেশ করুন

তারপরে বিশেষ, পৃষ্ঠা-নির্দিষ্ট হুকগুলিও রয়েছে যা আপনি এতে admin-footer.phpএবং একবারে একবার দেখে নিতে পারেন admin-header.php:

// Examples:
// Header
"admin_head-$hook_suffix"
"admin_print_styles-$hook_suffix"
"admin_print_scripts-$hook_suffix"
// Footer
"admin_footer-$hook_suffix"

বাস্তব বিশ্বের কয়েকটি উদাহরণ: পোস্ট স্ক্রিন

// Examples how the result looks like
admin_print_styles-post.php
admin_print_styles-post-new.php

এরপরে $hook_suffixস্ক্রিপ্টগুলি সজ্জিত করার জন্য আপনি যা পরীক্ষা করতে পারেন ঠিক ততক্ষণ আপনি যখন নিজের ক্রিয়াটি আঁকছেন তখন:

do_action( 'admin_enqueue_scripts', $hook_suffix );

হালনাগাদ

এই ডেটা / তথ্যতে সহজে (1 ক্লিক করুন) অ্যাক্সেস পাওয়ার জন্য, আমরা একটি নিখরচায় উপলব্ধ, বিকাশকারী বান্ধব প্লাগইন "(ডাব্লুসিএম) কারেন্ট অ্যাডমিন ইনফো" নামে তৈরি করেছি যা গিটহাবটিতে উপলব্ধ । প্লাগইন অদূর ভবিষ্যতে অফিসিয়াল ডাব্লুপিআর.জি. সংগ্রহস্থলটিতেও পাওয়া যাবে ।

স্ক্রিন শট

এই প্লাগইনটি দিয়ে আপনি কী পান তার পূর্বরূপ দিতে:

স্ক্রিন

আঙ্গুলসমূহ

Globals


0

(শিরোনামে। Php) এর লাইনে কিছু করতে পারে:

<?php
        if ( have_posts() && ( is_page() || is_single() ) ) {
            $content = get_the_content(the_post());
            if ( stripos( $content , '[your-shortcode') ) { function_for_scripts(); } 
        }   
?>

বর্তমান লোডটি পৃষ্ঠা বা পোস্ট কিনা তা পরীক্ষা করে, তারপরে সামগ্রীটি ধরে ফেলবে এবং আপনার শর্টকোডের জন্য অনুসন্ধান করবে। এটি সন্ধান করার পরে, এটি আপনার ফাংশনটি সম্পাদন করে।


আপনার বার্তার জন্য আপনাকে ধন্যবাদ. আমি আপনার সমাধানটি ব্যবহার করার চেষ্টা করেছি, তবে দুর্ভাগ্যক্রমে, আমি এটি কাজে লাগাতে পারিনি।
লক্ষ্মীদি

শিরোনামে যুক্ত হয়েছিল?
নোল টক

1
আপনি কি ইতিমধ্যে দেখেছেন get_shortcode_regex()?
কায়সার 16

0

সহজ উপায় হ'ল কেবল শর্টকোড পরীক্ষা করা।

function your_scripts()
{ 
    global $post;
    wp_register_script('your-script',$the_path_to_your_script,'0.1',true);
    if ( strstr( $post->post_content, '[your-shortcode' ) ) 
    {
        wp_enqueue_script('your-script');
    }
}
add_action( 'wp_enqueue_scripts', 'your_scripts');

1
তার get_shortcode_regex()জন্য আছে ।
কায়সার 16

0

@ কাইজার get_shortcode_regex()এই থ্রেডে বেশ কয়েকবার উল্লেখ করেছেন , আমি কেবল ভেবেছিলাম কীভাবে এটি ব্যবহার করব সে সম্পর্কে আমি একটি উদাহরণ দেব। কোডটি বেশ অনেকটা get_shortcode_regex()ওয়ার্ডপ্রেস কোড রেফারেন্স পৃষ্ঠা থেকে নেওয়া হয়েছে ।

function enqueue_script_if_shortcode_is_detected() {
    global $post;

    wp_register_script( 'your-script', $the_path_to_your_script, '1.0', true );

    $pattern = get_shortcode_regex();

    if (   preg_match_all( '/'. $pattern .'/s', $post->post_content, $matches )
        && array_key_exists( 2, $matches )
        && in_array( 'your-shortcode', $matches[2] )
    ) {
        wp_enqueue_script('your-script');
    }
}
add_action( 'wp_enqueue_scripts', 'enqueue_script_if_shortcode_is_detected' );

-3

আমি এই সমাধানটি পেয়েছি :

add_action( 'wp_print_scripts', 'my_deregister_javascript', 100 );

function my_deregister_javascript() {
    wp_deregister_script( 'my_scripts_handle' );
}

3
তবে আপনি সমাধানগুলি সমস্ত পৃষ্ঠাগুলি থেকে স্ক্রিপ্টগুলি সরিয়ে
ফেলবেন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.