ট্যাক্সনোমিতে মেটাবক্স যুক্ত করার একটি সহজ তবে সম্পূর্ণ উদাহরণ প্রয়োজন


18

এখন ওয়ার্ডপ্রেস ৪.৪ শেষ হয়ে গেছে, আমরা নতুন দুর্দান্ত শব্দ মেটা ফাংশন ব্যবহার শুরু করতে পারি!

তবুও, কীভাবে কোনও ট্যাক্সনোমিতে একটি মৌলিক পাঠ্য ক্ষেত্র যুক্ত করা যায় সে সম্পর্কে কোনও সহজ টিউটোরিয়াল নেই। আমি জাস্টিন ট্যাডলকের এই দুর্দান্ত টিউটোরিয়ালটি আমার প্রয়োজনের সাথে খাপ খাইয়ে নেওয়ার চেষ্টা করেছি, রঙ চয়নকারী সম্পর্কিত সমস্ত কোড মুছে ফেলা এবং একটি সরল পাঠ্য ইনপুট ক্ষেত্রটি দিয়ে প্রতিস্থাপন করেছি ... তবে এটি কাজ করছে না।

কেউ কি খালি হাড়ের ওয়ার্কিং কোডের নমুনা সরবরাহ করতে পারে? ডেটা বৈধতা, ননসেস, কালার পিকার ছাড়া ... কেবলমাত্র একটি সংক্ষিপ্ত পাঠ্য বাক্স, যোগ কর / সম্পাদনা বিভাগের পৃষ্ঠায় যুক্ত করা হয়েছে।

আপডেট: এর মধ্যে, আমি এই কোড স্নিপেটের কয়েকটি পরিবর্তন করেছি:

শব্দটি মেটা ক্ষেত্র যুক্ত করুন শ্রেণী :
https://gist.github.com/ms-studio/543a0f7dd8ac05ccf037

পোস্ট ট্যাগে টার্ম মেটা ক্ষেত্র যুক্ত করুন :
https://gist.github.com/ms-studio/2d78ad3839e05ece2e48

শুল্ক বিভাগে মেটা ক্ষেত্র যুক্ত করুন :
https://gist.github.com/ms-studio/fc21fd5720f5bbdfaddc

যোগ বিভিন্ন শব্দটি মেটা ক্ষেত্র কাস্টম বর্গীকরণ সূত্র :
https://gist.github.com/ms-studio/aeae733f5fd9fc524bbc


দয়া করে আপনার বর্তমান কোড স্নিপেট পোস্ট করুন এবং কীভাবে এটি ব্যর্থ হয়।
বার্গিরে

@ বীরগীর আমার মূল কোডটি পোস্ট না করায় দুঃখিত, তবে এটি ইতিমধ্যে খুব গণ্ডগোল হয়ে গিয়েছিল, এবং আমি বরং একটি পরিষ্কার উদাহরণ থেকে শুরু করব।
মানু

উত্তর:


13

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

উপভোগ করুন!

// REGISTER TERM META

add_action( 'init', '___register_term_meta_text' );

function ___register_term_meta_text() {

    register_meta( 'term', '__term_meta_text', '___sanitize_term_meta_text' );
}

// SANITIZE DATA

function ___sanitize_term_meta_text ( $value ) {
    return sanitize_text_field ($value);
}

// GETTER (will be sanitized)

function ___get_term_meta_text( $term_id ) {
  $value = get_term_meta( $term_id, '__term_meta_text', true );
  $value = ___sanitize_term_meta_text( $value );
  return $value;
}

// ADD FIELD TO CATEGORY TERM PAGE

add_action( 'category_add_form_fields', '___add_form_field_term_meta_text' );

function ___add_form_field_term_meta_text() { ?>
    <?php wp_nonce_field( basename( __FILE__ ), 'term_meta_text_nonce' ); ?>
    <div class="form-field term-meta-text-wrap">
        <label for="term-meta-text"><?php _e( 'TERM META TEXT', 'text_domain' ); ?></label>
        <input type="text" name="term_meta_text" id="term-meta-text" value="" class="term-meta-text-field" />
    </div>
<?php }


// ADD FIELD TO CATEGORY EDIT PAGE

add_action( 'category_edit_form_fields', '___edit_form_field_term_meta_text' );

function ___edit_form_field_term_meta_text( $term ) {

    $value  = ___get_term_meta_text( $term->term_id );

    if ( ! $value )
        $value = ""; ?>

    <tr class="form-field term-meta-text-wrap">
        <th scope="row"><label for="term-meta-text"><?php _e( 'TERM META TEXT', 'text_domain' ); ?></label></th>
        <td>
            <?php wp_nonce_field( basename( __FILE__ ), 'term_meta_text_nonce' ); ?>
            <input type="text" name="term_meta_text" id="term-meta-text" value="<?php echo esc_attr( $value ); ?>" class="term-meta-text-field"  />
        </td>
    </tr>
<?php }


// SAVE TERM META (on term edit & create)

add_action( 'edit_category',   '___save_term_meta_text' );
add_action( 'create_category', '___save_term_meta_text' );

function ___save_term_meta_text( $term_id ) {

    // verify the nonce --- remove if you don't care
    if ( ! isset( $_POST['term_meta_text_nonce'] ) || ! wp_verify_nonce( $_POST['term_meta_text_nonce'], basename( __FILE__ ) ) )
        return;

    $old_value  = ___get_term_meta_text( $term_id );
    $new_value = isset( $_POST['term_meta_text'] ) ? ___sanitize_term_meta_text ( $_POST['term_meta_text'] ) : '';


    if ( $old_value && '' === $new_value )
        delete_term_meta( $term_id, '__term_meta_text' );

    else if ( $old_value !== $new_value )
        update_term_meta( $term_id, '__term_meta_text', $new_value );
}

// MODIFY COLUMNS (add our meta to the list)

add_filter( 'manage_edit-category_columns', '___edit_term_columns' );

function ___edit_term_columns( $columns ) {

    $columns['__term_meta_text'] = __( 'TERM META TEXT', 'text_domain' );

    return $columns;
}

// RENDER COLUMNS (render the meta data on a column)

add_filter( 'manage_category_custom_column', '___manage_term_custom_column', 10, 3 );

function ___manage_term_custom_column( $out, $column, $term_id ) {

    if ( '__term_meta_text' === $column ) {

        $value  = ___get_term_meta_text( $term_id );

        if ( ! $value )
            $value = '';

        $out = sprintf( '<span class="term-meta-text-block" style="" >%s</div>', esc_attr( $value ) );
    }

    return $out;
}

// ADD JAVASCRIPT & STYLES TO COLUMNS

add_action( 'admin_enqueue_scripts', '___admin_enqueue_scripts' );

function ___admin_enqueue_scripts( $hook_suffix ) {

    if ( 'edit-tags.php' !== $hook_suffix || 'category' !== get_current_screen()->taxonomy )
        return;

    // ADD YOUR SUPPORTING CSS / JS FILES HERE
    // wp_enqueue_style( 'wp-color-picker' );
    // wp_enqueue_script( 'wp-color-picker' );

    add_action( 'admin_head',   '___meta_term_text_print_styles' );
    add_action( 'admin_footer', '___meta_term_text_print_scripts' );
}

// PRINT OUR CUSTOM STYLES

function ___meta_term_text_print_styles() { ?>

    <style type="text/css">
        .column-__term_meta_text { background-color:rgb(249, 249, 249); border: 1px solid lightgray;}
        .column-__term_meta_text .term-meta-text-block { display: inline-block; color:darkturquoise; }
    </style>
<?php }

// PRINT OUR CUSTOM SCRIPTS

function ___meta_term_text_print_scripts() { ?>

    <script type="text/javascript">
        jQuery( document ).ready( function( $ ) {
             $input_field = $( '.term-meta-text-field' );
             // console.log($input_field); // your input field
        } );
    </script>
<?php }

অনেক ধন্যবাদ, এটি সত্যিই সহায়ক! কোডটি যেমন হয় তেমন প্রয়োগ করার সময় আমার একটি সমস্যার মুখোমুখি হয়: টার্ম সংশোধন করার সময় TERM META TEXT ক্ষেত্রটি আপডেট হয় তবে একটি শব্দ তৈরি হওয়ার সময় সেভ হয় না
মানু

আমি অন্য পরীক্ষার সাইটে চেষ্টা করেছি এবং একই আচরণ দেখেছি - সবকিছু ঠিকঠাক কাজ করছে, শব্দ তৈরির পরেও, মেটা পাঠ্যটি সংরক্ষণ করা হয়নি। আমি ভিতরে ননস যাচাইকরণ অক্ষম করেছি ___save_term_meta_text( $term_id )... এবং এটি সমস্যার সমাধান করেছে, নতুন শব্দ তৈরি করার সময় মেটা পাঠ্য এখন সংরক্ষণ করা হয়েছে! আমি আপনার উত্তরটি গ্রহণ করছি, কারণ এটি শুরু করতে আমার ঠিক যা প্রয়োজন তা সরবরাহ করে।
মানু

1
আমি কেবল বুঝতে পেরেছিলাম যে সমস্যাটি কী কারণে হয়েছে: ___add_form_field_term_meta_text()ফাংশনে আজেবাজে সংজ্ঞা দেওয়া হচ্ছে না । এটি যুক্ত করার পরে, সমস্ত প্রত্যাশা অনুযায়ী কাজ করে।
মানু

1
ডাব্লুপিপি ইতিমধ্যে কিছু রেখে দিয়েছে বলে অতিরিক্ত বাজে কথা বলে দূষণ করার দরকার নেই। শুধু করুন check_admin_referer( 'add-tag', '_wpnonce_add-tag' );এবং check_admin_referer( 'update-tag_' . (int) $_POST['tag_ID'] )ইন 'edit_category'এবং 'category_category'ক্রিয়া করুন।
জেড জেলাতেভ

এটি লক্ষণীয় যে আপনার ___register_term_meta_text()ফাংশনে তৃতীয় প্যারামিটারটি অবচয় করা হয়েছে এবং পরিবর্তে একটি অ্যারের সাথে প্রতিস্থাপন করা হয়েছে। আপনাকে এর মতো কিছু ব্যবহার করতে হবে:$args = array( 'type' => 'string', 'description' => 'A text field', 'single' => 'false', 'sanitize_callback' => '___sanitize_term_meta_weare_product', 'auth_callback' => null, 'show_in_rest' => false, ); register_meta( 'term', '__term_meta_text', $args );
ফ্রেটস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.