প্রয়োজন অনুযায়ী আরও মেটা বক্স তৈরি করুন


46

আমি চাই ব্যবহারকারীরা প্রয়োজনমতো অতিরিক্ত মেটা বক্স ক্ষেত্রগুলি তৈরি এবং মুছে ফেলতে সক্ষম হন।

উদাহরণস্বরূপ, প্রতি পর্বে একটি চলক গানের পরিমাণ সহ একটি সঙ্গীত পডকাস্ট বলুন। ব্যবহারকারীর এমন একটি বোতাম ক্লিক করতে সক্ষম হওয়া উচিত যা প্রতিটি গানের প্রয়োজন অনুসারে অতিরিক্ত ক্ষেত্র যুক্ত করবে।

আদর্শভাবে এটি কোনও প্লাগইন ব্যবহার না করেই করা হবে তবে ফাংশন ফাইলটিতে কোড করে।


আপনি কাস্টম ফিল্ডগুলি মেটাবক্সে বিল্ট ইন বর্ণনা করছেন!
বেন্টারনেট

1
আমি অনুমান করি যে এটি কীভাবে কাজ করে তবে এটি একবারে কেবল একটি ক্ষেত্র করার জন্য সেট আপ করা হয় এবং এটি ব্যবহারকারীদের পক্ষে বন্ধুত্বপূর্ণ নয়।
Picard102

উত্তর:


52

সুতরাং আপনি এই মত কিছু বোঝাতে চান?

এখানে চিত্র বর্ণনা লিখুন

এবং আপনি অ্যাড ট্র্যাকগুলিতে ক্লিক করলে এটি হয়ে যায়:

এখানে চিত্র বর্ণনা লিখুন

যদি ক্ষেত্রগুলি যুক্ত করতে এবং মুছে ফেলার জন্য সহজ জ্যাকোয়ারি ফাংশন রয়েছে এমন একটি মেটাবক্স তৈরি করে আপনি এটির অর্থটি বোঝাচ্ছেন এবং ডেটাটি একটি একক মেটা সারিতে ডেটার অ্যারে হিসাবে সংরক্ষণ করা হয়, আপনি এখানে যান:

  add_action( 'add_meta_boxes', 'dynamic_add_custom_box' );

    /* Do something with the data entered */
    add_action( 'save_post', 'dynamic_save_postdata' );

    /* Adds a box to the main column on the Post and Page edit screens */
    function dynamic_add_custom_box() {
        add_meta_box(
            'dynamic_sectionid',
            __( 'My Tracks', 'myplugin_textdomain' ),
            'dynamic_inner_custom_box',
            'post');
    }

    /* Prints the box content */
    function dynamic_inner_custom_box() {
        global $post;
        // Use nonce for verification
        wp_nonce_field( plugin_basename( __FILE__ ), 'dynamicMeta_noncename' );
        ?>
        <div id="meta_inner">
        <?php

        //get the saved meta as an array
        $songs = get_post_meta($post->ID,'songs',false);

        $c = 0;
        if ( count( $songs ) > 0 ) {
            foreach( $songs as $track ) {
                if ( isset( $track['title'] ) || isset( $track['track'] ) ) {
                    printf( '<p>Song Title <input type="text" name="songs[%1$s][title]" value="%2$s" /> -- Track number : <input type="text" name="songs[%1$s][track]" value="%3$s" /><span class="remove">%4$s</span></p>', $c, $track['title'], $track['track'], __( 'Remove Track' ) );
                    $c = $c +1;
                }
            }
        }

        ?>
    <span id="here"></span>
    <span class="add"><?php _e('Add Tracks'); ?></span>
    <script>
        var $ =jQuery.noConflict();
        $(document).ready(function() {
            var count = <?php echo $c; ?>;
            $(".add").click(function() {
                count = count + 1;

                $('#here').append('<p> Song Title <input type="text" name="songs['+count+'][title]" value="" /> -- Track number : <input type="text" name="songs['+count+'][track]" value="" /><span class="remove">Remove Track</span></p>' );
                return false;
            });
// The live() method was deprecated in jQuery version 1.7, and removed in version 1.9. Use the on() method instead. We can use .on
            $(".remove").live('click', function() {
                $(this).parent().remove();
            });
        });
        </script>
    </div><?php

    }

    /* When the post is saved, saves our custom data */
    function dynamic_save_postdata( $post_id ) {
        // verify if this is an auto save routine. 
        // If it is our form has not been submitted, so we dont want to do anything
        if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) 
            return;

        // verify this came from the our screen and with proper authorization,
        // because save_post can be triggered at other times
        if ( !isset( $_POST['dynamicMeta_noncename'] ) )
            return;

        if ( !wp_verify_nonce( $_POST['dynamicMeta_noncename'], plugin_basename( __FILE__ ) ) )
            return;

        // OK, we're authenticated: we need to find and save the data

        $songs = $_POST['songs'];

        update_post_meta($post_id,'songs',$songs);
    }

আমি যখন উপরের কোডটি ব্যবহার করি তখন কেবল "অ্যারে (0) T rac ট্র্যাক যুক্ত করুন" প্রদর্শিত হবে বলে মনে হয়।
Picard102

হ্যাঁ সরিয়ে ফেলুনvar_dump($songs);
বেন্টারনেট

শীতল, এটি স্থির করে দিয়েছিল তবে এখন ডেটা আপডেটে সংরক্ষণ করা হবে বলে মনে হয় না। বা কমপক্ষে এটি ডেটা আমার ট্র্যাকের অধীনে ক্ষেত্র হিসাবে প্রদর্শন করছে না, না কাস্টম ফিল্ডগুলিতে। যদি আমি "অ্যারে (1) {[0] => অ্যারে (1) {[1] => অ্যারে (2) its [" শিরোনাম "] => স্ট্রিং (4)" পরীক্ষার বাইরে চলে যাই তবে আমি যদি var_dump ফিরিয়ে রাখি "[" ট্র্যাক "] => স্ট্রিং (5)"
টেস্ট

4
সত্যিই নেই নিশ্চিত কি সমস্যা, তার না একটি সঠিক কোড, তার একটি উদাহরণ এবং আমার প্রান্তে তার কাজ জরিমানা, পরিবর্তন করার চেষ্টা if (count($songs) > 0){করতেif(is_array($songs)){
Bainternet

2
এখানে কোড বিটিডব্লিউটি যদি কেউ আগ্রহী হয় তবে কীভাবে আমি এটি প্রয়োগ করেছি। leschinskidesign.com.php5-10.websitetestlink.com/test/… leschinskidesign.com.php5-10.websitetestlink.com/test/… leschinskidesign.com.php5-10.websitetestlink.com/test/…
Picard102

3

এই কাস্টম ক্ষেতের মধ্য দিয়ে সম্পন্ন করা হয় কিন্তু আপনি কিছু করতে দেয় যা ব্যবহারকারী ব্যবহার না করা উচিত যোগ তৈরি বা মেটা বক্স মুছে ফেলুন। এগুলি সরাসরি ডাটাবেসে লিখুন যাতে আপনি ব্যবহারকারীদেরকে এই ধরণের নিয়ন্ত্রণ দেন তবে আপনি সম্ভবত আপনার সাইটের জন্য পুরো সমস্যা তৈরি করতে পারেন। আপনার প্রয়োজনীয় সর্বাধিক সংখ্যক কাস্টম ক্ষেত্র তৈরি করা আপনার পক্ষে এটি আরও নিরাপদ এবং তাদের প্রয়োজন নেই এমন জায়গায় কিছু ফাঁকা রেখে দিন।

এটি প্লাগইন অঞ্চলও। ফাংশন ফাইল থিম-নির্দিষ্ট যেখানে প্লাগইনগুলি এমন ফাংশনগুলির জন্য যা সাইটের সামগ্রীতে প্রযোজ্য, বিশেষত যদি আপনি চান যে কোনও বিষয়বস্তু আপনি যে থিমটি ব্যবহার করেন তা বিবেচনা না করেই উপলভ্য থাকুক।

কিছু পরামর্শ:

http://wordpress.org/extend/plugins/verve-meta-boxes/

http://wordpress.org/extend/plugins/more-fields/


3
কিন্তু আপনার এমন কোনও কিছুই ব্যবহার করা উচিত নয় যা ব্যবহারকারীদের মেটা বাক্স যুক্ত করতে বা মুছে ফেলতে দেয় কেন?
ট্র্যাভিস নর্থকুট

আমার একমাত্র উদ্বেগ হ'ল যে কোনও প্লাগইন সহ এমন সুযোগ আসে যা ভবিষ্যতে এটি সমর্থন করা বন্ধ করে দেয়। আমি অনুভব করি যে সম্ভবত কোনও প্লাগইন ঠিক করার পদ্ধতি নির্ধারণের চেয়ে আমি কীভাবে ফাংশনগুলির ফাইলে একটি সাধারণ সংযোজন ঠিক করতে পারি তা নির্ধারণ করতে সক্ষম হব।
Picard102

প্লাগইনগুলি মূলত থিমের বাইরে থাকা ফাংশন। আপনি একটি প্লাগইন নিতে পারেন এবং ফাংশন.এফপি কোডটি অনুলিপি করতে পারেন এবং এটি কার্যকর হবে। একইভাবে, আপনি ফাংশন.এফপি থেকে ফাংশন নিতে পারেন, প্লাগইনটির জন্য প্রয়োজনীয় শিরোনাম যুক্ত করতে পারেন এবং এটি সক্রিয় করার সাথে সাথে এটি ঠিক একইভাবে কাজ করে।
এলপি

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