অ্যাডমিন প্যানেলে WooCommerce অর্ডারে কাস্টম ফিল্ডটি কীভাবে প্রদর্শিত হবে?


13

বর্তমানে আমি ওয়ার্ক কমার্সে একটি কাস্টম বিলিংয়ের ক্ষেত্র যুক্ত করছি

function custom_override_checkout_fields( $fields ) {
     $fields['billing']['billing_phone_new'] = array(
        'label'     => __('Phone 2', 'woocommerce'),
    'placeholder'  => _x('Phone 2', 'placeholder', 'woocommerce'),
    'required'  => false,
    'class'     => array('form-row-wide'),
    'clear'     => true
     );

     return $fields;
}

add_filter('woocommerce_checkout_fields','custom_override_checkout_fields');

অ্যাডমিন দিকে আমার এই ক্ষেত্রের মানটি সম্পাদনা করতে হবে। বর্তমানে আমি বিলিং ঠিকানায় অন্য সমস্ত মান সম্পাদনা করতে পারি তবে এই মানটি অ্যাডমিন বিভাগে প্রদর্শিত হচ্ছে না। আমি প্রশাসক বিভাগে মানটি দেখার জন্য নিম্নলিখিত কোডগুলি ব্যবহার করি।

function order_phone_backend($order){
    echo "<p><strong>Billing phone 2:</strong> " . get_post_meta( $order->id, '_billing_phone_new', true ) . "</p><br>";
} 

add_action( 'woocommerce_admin_order_data_after_billing_address', 'order_phone_backend', 10, 1 );

আমি ডকুমেন্টেশনটি https://docs.woothemes.com/docament/tutorial-customising-checkout-fields-used-ferences-and-filters/ পড়েছি । তবে এই দস্তাবেজের সমস্ত কিছুই সঠিকভাবে প্রত্যাশিত বিলিংফোন / ফোনটি কাস্টম ফিল্ডের অধীনে দ্রষ্টব্য দেখুন। আমি স্ক্রিন বিকল্পটি যাচাই করেছি তবে আমি ইতিমধ্যে কাস্টম ক্ষেত্রটিকে টিক দিয়েছি। অন্যান্য কাস্টম ক্ষেত্র এবং এর মান দৃশ্যমান এবং সম্পাদনাযোগ্য।

কিভাবে আমি এই মানটি পিছনে শেষ করে সম্পাদনা করতে পারি। সাহায্য করুন .


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

দয়া করে এখনই আমার কোডটি পরীক্ষা করুন
রন

উত্তর:


22

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

/**
 * Process the checkout
 */
add_action('woocommerce_checkout_process', 'my_custom_checkout_field_process');

function my_custom_checkout_field_process() {
    // Check if set, if its not set add an error.
    if ( ! $_POST['billing_phone_new'] )
        wc_add_notice( __( 'Phone 2 is compulsory. Please enter a value' ), 'error' );
}


/**
 * Update the order meta with field value
 */
add_action( 'woocommerce_checkout_update_order_meta', 'my_custom_checkout_field_update_order_meta' );

function my_custom_checkout_field_update_order_meta( $order_id ) {
    if ( ! empty( $_POST['billing_phone_new'] ) ) {
        update_post_meta( $order_id, 'billing_phone_new', sanitize_text_field( $_POST['billing_phone_new'] ) );
    }
}


/**
 * Display field value on the order edit page
 */
add_action( 'woocommerce_admin_order_data_after_billing_address', 'my_custom_checkout_field_display_admin_order_meta', 10, 1 );

function my_custom_checkout_field_display_admin_order_meta($order){
    echo '<p><strong>'.__('Phone 2').':</strong> <br/>' . get_post_meta( $order->get_id(), 'billing_phone_new', true ) . '</p>';
}

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

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


"" _ (আন্ডারস্কোর) দিয়ে শুরু হওয়া কোনও কাস্টম ফিল্ড কী নামটি একটি গোপন কাস্টম ক্ষেত্র এবং এটি "কাস্টম ক্ষেত্র" এর অধীনে ব্যাকএন্ডে প্রদর্শিত হবে না। "" আপনি কোথা থেকে এই তথ্যটি পাবেন?
রন

2
ওয়ার্ডপ্রেস কোডেক্সে। আপনি এখানে আরও তথ্য পেতে
প্রসাদ নেভেসে

দয়া করে helpt আমার বন্ধু প্রশ্ন সমাধান stackoverflow.com/questions/49505056/...
রন

আমার ক্ষেত্রে, আমি get_post_meta ($ অর্ডার-> get_id (), '_ বিলিং_ফোন_নিউ', সত্য) ব্যবহার করে ফলাফল পেয়েছি। আমাকে get_post_meta ফাংশনে চলক নামের সামনে আন্ডারস্কোর রাখতে হবে।
দশরথ

1

সমাধানটি এখানে: সরাসরি পণ্য ডেটা অ্যাক্সেস অনুমোদিত নয়, যেমন

$product->id

এগিয়ে যাওয়ার সঠিক পদ্ধতিটি হ'ল:

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