আপনি ডাব্লুপি অ্যাডমিন বিভাগের কোনও নির্দিষ্ট পৃষ্ঠায় আছেন কিনা তা আপনি কীভাবে পরীক্ষা করতে পারেন? উদাহরণস্বরূপ আমি ব্যবহারকারীদের> আপনার প্রোফাইল পৃষ্ঠায় আছি কিনা তা আমি কীভাবে পরীক্ষা করতে পারি?


32

আমি একটি প্লাগইন তৈরি করছি এবং আমি অ্যাডমিন হেডে জাভাস্ক্রিপ্টের বিটগুলি যুক্ত করতে চাই তবে কেবলমাত্র নির্দিষ্ট অ্যাডমিন পৃষ্ঠাগুলির জন্য। আমি নিজেকে ওয়ার্ডপ্রেস পৃষ্ঠায় যে পৃষ্ঠাগুলি তৈরি করে তা বোঝাতে চাইছি না বরং বিদ্যমান প্রশাসক বিভাগের পৃষ্ঠাগুলি যেমন 'আপনার প্রোফাইল', 'ব্যবহারকারী' ইত্যাদি this আমি খুঁজছিলাম এবং আমি কেবল বুলিয়ান ফাংশন is_adminএবং অ্যাকশন হুকগুলি পাই তবে কেবল বুলিয়ান ফাংশনটি যা পরীক্ষা করে তা খুঁজে পাচ্ছি না ।


1
আপনাকে কোনও উত্তর স্মরণ করিয়ে দেওয়ার জন্য কোমল নজ গ্রহণ করা হয়নি। প্রদত্ত উত্তরগুলির কোনওটিই যদি আপনার প্রশ্নের যথেষ্ট উত্তর দেয় না বা আপনি প্রদত্ত তথ্যগুলি বোঝার জন্য সংগ্রাম করছেন তবে আমাদের জানানোর জন্য মন্তব্য করুন।
t31os

উত্তর:


24

এটি করার উপায়টি হ'ল 'অ্যাডমিন_ইনকিউ_সক্রিপ্টস' হুকটি আপনার প্রয়োজনীয় ফাইলগুলিকে এন-ক্যু করতে ব্যবহার করুন। এই হুকটি এমন একটি $ হুক_সফিক্স পাস করবে যা লোড হওয়া বর্তমান পৃষ্ঠার সাথে সম্পর্কিত:

function my_admin_enqueue($hook_suffix) {
    if($hook_suffix == 'appearance_page_theme-options') {
        wp_enqueue_script('my-theme-settings', get_template_directory_uri() . '/js/theme-settings.js', array('jquery'));
        wp_enqueue_style('my-theme-settings', get_template_directory_uri() . '/styles/theme-settings.css');
        ?>
        <script type="text/javascript">
        //<![CDATA[
        var template_directory = '<?php echo get_template_directory_uri() ?>';
        //]]>
        </script>
        <?php
    }
}
add_action('admin_enqueue_scripts', 'my_admin_enqueue');

55

ডাব্লুপি -অ্যাডমিনে $ পেজনো নামে একটি বৈশ্বিক পরিবর্তনশীল রয়েছে যা বর্তমান পৃষ্ঠার নাম ধারণ করে, যেমন edit.php, post.php, ইত্যাদি holds

আপনি নিজের অবস্থানটি আরও নীচে সঙ্কুচিত করার জন্য G _GET অনুরোধটিও পরীক্ষা করতে পারেন, উদাহরণস্বরূপ:

global $pagenow;
if (( $pagenow == 'post.php' ) && ($_GET['post_type'] == 'page')) {

    // editing a page

    }

if ($pagenow == 'users.php') {

    // user listing page

    }

if ($pagenow == 'profile.php') {

    // editing user profile page

    }

1
global $pagenow; if ( ( 'admin.php' === $pagenow ) && ( 'prefix-theme-settings' === $_GET['page'] ) ) { logic.. }উদাহরণস্বরূপ আপনি যদি কোনও কাস্টম থিম সেটিংস পৃষ্ঠাতে থাকেন তা পরীক্ষা করে দেখুন admin.php?page=prefix-theme-settings
lowtechsun

19

get_current_screenওয়ার্ডপ্রেস ৩.১- এ সর্বাধিক বিস্তৃত পদ্ধতি যুক্ত করা হয়েছে

$screen = get_current_screen();

আয়

WP_Screen Object (
    [action] => 
    [base] => post
    [id] => post
    [is_network] => 
    [is_user] => 
    [parent_base] => edit
    [parent_file] => edit.php
    [post_type] => post
    [taxonomy] => 
)

3
"ব্যবহারের সীমাবদ্ধতা - বেশিরভাগ অ্যাডমিন পৃষ্ঠাগুলিতে এই ফাংশনটি সংজ্ঞায়িত করা হয়েছে তবে সমস্ত নয় Thus সুতরাং এখানে_এডমিন () সত্য প্রত্যাবর্তন করবে তবে get_current_screen () কল করার চেষ্টা করলে এটি মারাত্মক ত্রুটির কারণ হিসাবে সংজ্ঞায়িত হয় নি is এক পরিচিত উদাহরণটি হ'ল ডাব্লুপি-অ্যাডমিন / কাস্টমাইজ.এফপি। অ্যাডমিন_নিট হুক থেকে কল করা হলে ফাংশনটি শূন্য হয়। কারেন্ট_স্ক্রিনের পরে কোনও হুক ব্যবহার করা ঠিক হবে "" - কোডেক্স
এই ব্রাজিলিয়ান গাই

@ থ্যাট ব্রাজিলিয়ান গুই একটি দ্রুত চেকের পরামর্শ দেয় এটি আর নেই, যতদূর আমি দেখতে পাচ্ছি get_current_screen()সমস্ত প্রশাসক পৃষ্ঠায় ব্যবহার করা নিরাপদ।
শাহর

1
উপরে প্রকাশিত ডকুমেন্টেশন এবং আমার অভিজ্ঞতা অনুসারে @ শাহর এখনও এটিই রয়ে গেছে।
ফেব্রিক

9

উপরের প্রশ্নের বিকল্প পদ্ধতি / পদ্ধতির অফার দেওয়া।

// When you are viewing the users list or your editing another user's profile
add_action( 'admin_print_scripts-users.php', 'your_enqueue_callback' );

// When you are editing your own profile
add_action( 'admin_print_scripts-profile.php', 'your_enqueue_callback' );

function your_enqueue_callback() {
    wp_enqueue_script( .. YOUR ENQUEUE ARGS .. );
}

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


যদি আমি জানতাম যে এই উত্তর কেন বেশি ভোট পেল না, প্রশ্নটিতে সঠিক ব্যবহারের ক্ষেত্রটি কভার করে এবং ন্যূনতম পরিমাণে সমাধান সরবরাহ করে। প্রতিক্রিয়াটি সুন্দর হবে ..
t31os

3

আমি এটি অদ্ভুত মনে করি যে কেউই এই সত্যটি উল্লেখ করেনি যে যুক্ত_মেনু_পৃষ্ঠা ফাংশন একটি ক্রিয়া হুক দেয় যা আপনি কেবলমাত্র সেই পৃষ্ঠাগুলিতে নির্দিষ্ট ক্রিয়া করতে ব্যবহার করতে পারেন

$hook = add_menu_page($menu_title, $page_title, $capability, $slug, $function, $icon_url, $position);
add_action( 'load-' . $hook, 'my_admin_enqueue_scripts' );
function my_admin_enqueue_scripts() {
    wp_enqueue_script(/*...*/);
    wp_enqueue_style(/*...*/);
}

যদি আপনার $ হুক দরকার হয় এবং আপনি মেনু পৃষ্ঠাটি যুক্ত না করেন তবে ডকটি এখানে রয়েছে

উদাহরণস্বরূপ শীর্ষ স্তরের মেনু পৃষ্ঠার হুকটি

লোড toplevel_page_ $ MenuSlug

একটি সাবমেনু পৃষ্ঠার জন্য হুক হয়

load- $ MenuSlug_page_ $ SubMenuSlug

এই যুক্তি অনুসরণ করে, ব্যবহারকারীর প্রোফাইল পৃষ্ঠার হুক

লোড users_page_profile

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