নির্বাচিত পৃষ্ঠাগুলির উপর ভিত্তি করে অ্যাডমিন মেটাবক্স টগল করুন


18

আমি কেবলমাত্র একটি নির্দিষ্ট ওয়ার্ডপ্রেস পৃষ্ঠায় নির্দিষ্ট টেম্পলেট নির্ধারিত হলে একটি কাস্টম ফিল্ড ইন্টারফেস দেখাতে চাই have

কোন ধারনা?


যদি এটি 'লাইভ' হওয়ার দরকার না হয় (যেমন পৃষ্ঠার টেমপ্লেট পরিবর্তন করে মেটাবক্সটি তাত্ক্ষণিকভাবে প্রদর্শিত / অদৃশ্য করার প্রয়োজন হয় না) এই সম্পর্কিত প্রশ্নটি দেখুন: ওয়ার্ডপ্রেস.স্ট্যাকেক্সেঞ্জ
স্টিফেন হ্যারিস

@ স্টেফেনহরিস মন্তব্যটির জন্য ধন্যবাদ। আমি ডাব্লুপিএলেচেমি মেটাবক্স ক্লাসের সাথে যেতে চাইলাম, এতে সেটআপে "প্রতি টেম্পলেট" বিকল্প রয়েছে।
জোনাথন ওল্ড

উত্তর:


22

এই পরিস্থিতির কাছে যাওয়ার সেরা উপায়টি জাভাস্ক্রিপ্টের মাধ্যমে। এইভাবে, যখনই নির্বাচিত মান পরিবর্তন হয়, আপনি তাত্ক্ষণিকভাবে সম্পর্কিত মেটাবক্সকে আড়াল / প্রদর্শন করতে পারেন।

ব্যবহার করুন wp_enqueue_script()মধ্যে functions.phpঅ্যাডমিন এলাকায় একটি কাস্টম জাভাস্ক্রিপ্ট ফাইল লোড করতে:

add_action('admin_enqueue_scripts', 'my_admin_script');
function my_admin_script()
{
    wp_enqueue_script('my-admin', get_bloginfo('template_url').'/my-admin.js', array('jquery'));
}

স্ক্রিপ্ট নিজেই, যার জন্য jQuery প্রয়োজন, কেবলমাত্র পৃষ্ঠার টেম্পলেট ড্রপডাউন তালিকার নির্বাচিত মানের উপর ভিত্তি করে একটি মেটাবক্স লুকায় বা দেখায়। এই উদাহরণস্বরূপ, আমি ডিফল্ট পৃষ্ঠা টেম্পলেটটি নির্বাচন করা ক্ষেত্রে কেবল পোস্ট থাম্বনেইলের জন্য কেবল মেটাবক্সটি দেখছি:

(function($){
$(document).ready(function() {

    var $page_template = $('#page_template')
        ,$metabox = $('#postimagediv'); // For example

    $page_template.change(function() {
        if ($(this).val() == 'default') {
            $metabox.show();
        } else {
            $metabox.hide();
        }
    }).change();

});
})(jQuery);

এবং, কেবল মজাদার জন্য, এখানে একই স্ক্রিপ্টটির সংক্ষিপ্ত, কম ভার্বোস, সংস্করণ:

(function($){
$(function() {

    $('#page_template').change(function() {
        $('#postimagediv').toggle($(this).val() == 'default');
    }).change();

});
})(jQuery);

ওহ! ধন্যবাদ! আমি শীঘ্রই এটি একটি পরীক্ষা দিচ্ছি এবং সেই অনুযায়ী ফিরে রিপোর্ট করব।
জোনাথন ওল্ড

এত দারুণ ... আমার যা প্রয়োজন তা হ'ল আমার জন্য নিখুঁত কাজ করেছেন। ধন্যবাদ!!!
রস

দুঃখিত তবে আমি জাভাস্ক্রিপ্টের একজন সত্যিকারের শিক্ষানবিশ এবং আমার প্রয়োজনীয় জিনিসগুলি যা আছে তা আমি জানি, তবে মনে হয় আমি জিনিসগুলি সঠিক উপায়ে করতে সক্ষম নই ... তাই আমি কী বুঝতে বুঝতে পারছি না? আমাকে জাভাস্ক্রিপ্ট ফাইলটিতে পরিবর্তন করতে হবে .. আমার মতো কোন নবীর পক্ষে আরও ব্যাখ্যা পাওয়া সম্ভব? ;)

1

মেটাবক্সকে কেবল jQuery এর সাথে আড়াল করার পরিবর্তে আপনি এটি ব্যবহার করতে পারেন। কেবলমাত্র তাত্পর্য হ'ল মেটাবক্সের লুকানো / প্রদর্শনের জন্য ড্রপ-ডাউন ক্ষেত্রটি পরিবর্তনের পরে 'আপডেট' নির্বাচন করা প্রয়োজন।

function add_meta_box() {
    global $post;
    if(!empty($post)) {
        $pageTemplate = get_post_meta($post->ID, '_wp_page_template', true);

        if($pageTemplate == 'your-page-template-here.php' ) {
            add_meta_box( $id, $title, $callback, 'page', $context, $priority, $callback_args );
        }
    }
}
add_action( 'add_meta_boxes', 'add_meta_box' );

পছন্দসই হিসাবে কেবল 6 এবং 7 লাইন আপডেট করুন।

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