ট্যাক্সনোমির শর্তাদি সংরক্ষণ করা হচ্ছে


16

আমার একটি আকর্ষণীয় সমস্যা রয়েছে যা আমি আশা করি যে কেউ দ্রুত উত্তর দিতে পারে।

আমি আমার নিজস্ব মেটাবক্স তৈরি করেছি যা "আমার মেটাবক্স কোড" এর উপর ভিত্তি করে (নীচের তালিকা) আমার তৈরি "ইভেন্ট_ টাইপস" শ্রেণিবদ্ধের মধ্যে আমার সমস্ত শর্তের ড্রপডাউন তালিকাটি সঠিকভাবে প্রদর্শন করছে।

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

বিভিন্ন কোড বিটের সাহায্যে চারপাশে ঝাঁকুনির পরে আমি বুঝতে পেরেছিলাম যে অ্যারে এরিয়ায় অনেকগুলি পদ_আইডি নম্বর (কমা দ্বারা পৃথক করা) লিখে আমি ফলাফলগুলি পাচ্ছি looking

উদাহরণস্বরূপ যদি পোস্টটি সংরক্ষণ করার সময় কোনও ফাংশন এই কোডটি কল করে

wp_set_post_terms( $post_id, array(5,7), 'event_types', FALSE);

তারপরে আমার পোস্ট আপডেট হবে এবং এর সাথে টার্ম_আইডি 5 এবং 7 যুক্ত করবে যা আপনি দেখতে পাচ্ছেন আমি অ্যারে পার করছি। সমস্যাটি হ'ল এটি আমার ফাংশন.এফপি ফাইলটিতে কঠোরভাবে কোডড এবং কোনও ব্যবহারকারী নির্বাচিত ড্রপডাউন মানের উপর ভিত্তি করে নয় (দ্রষ্টব্য: আমি আসলে কেবল একটি আইডি পাস করার চেষ্টা করছি তবে নীচে বর্ণিত হিসাবে টেস্টিংয়ের জন্য দুটি করেছি)।

আমি এটিও নির্ধারণ করতে সক্ষম হয়েছি যে আমি যদি আমার মেটাবক্স ফাইলে নিম্নলিখিত কোডটি যুক্ত করি তবে আমি নির্ধারিত টার্ম আইডিগুলির একটি তালিকা প্রতিধ্বনি করতে সক্ষম হয়েছি তবে শেষ আইটেমটিতে একটি কমা রয়েছে।

<?php $event_types = wp_get_object_terms($post->ID, 'event_types'); 
foreach ($event_types as $event_type) { echo $event_type->term_id . ','; } ?>

সুতরাং ... মনে হচ্ছে আমার সমস্যার 85% সমাধান হয়েছে। আমার বাকী 15% সমস্যা নীচে রয়েছে:

  1. আমার ফাংশন.এফপিপি ফাইল কোডে (নীচে তালিকাভুক্ত) আমাকে কী যুক্ত করতে হবে যাতে আমি যখন আমার ট্যাক্সনমি ড্রপডাউন তালিকা থেকে নির্বাচিত নতুন ভ্যালু অ্যারেতে প্রবেশ করি / আপডেট করি?

  2. যদিও এই উদাহরণে আমি নিশ্চিত করতে চাইছি যে কেবলমাত্র একটি একক শ্রেণিবদ্ধ একটি পোস্টের সাথে যুক্ত হতে পারে, এমন অন্যান্য পরিস্থিতি রয়েছে যেখানে আমি একটি চেকবক্স তালিকা তৈরি করতে চাই যেখানে আমাকে অ্যারেতে একাধিক মান পাস করতে হবে। এর মতো, আমার কী পরিবর্তন করতে হবে যাতে টার্ম আইডিগুলির একটি কমা দ্বারা পৃথক করা তালিকা অ্যারেতে চলে যায়? যদি আপনার উত্তরটিতে আমি উল্লিখিত উদাহরণ কোডের কিছু বা কিছু অংশ ব্যবহার করা জড়িত যেখানে আমি আইডিগুলি প্রতিধ্বনিত করি তবে আমি কীভাবে শেষ আইডিটি নিশ্চিত করব যে প্রিন্ট করা আছে তার শেষে কমা নেই? (এটি করার কোনও আলাদা / আরও ভাল উপায় আছে? আমি ইঙ্গিতগুলি দেখেছি যা ফিল্টার যুক্ত করার সাথে সম্পর্কিত হতে পারে তবে কীভাবে এটি করা হয়েছে তা সম্পর্কে আমি নিশ্চিত নই ...)

আপনাকে আগাম অনেক ধন্যবাদ - নীচে আমি বর্তমানে প্রতিটি ফাইলে যে কোডটি ব্যবহার করছি তা নীচে।

আমার ফাংশনগুলিতে কোড। পিএইচপি ফাইল

function save_event_taxonomy_terms($meta, $post_id) {
        $event_types = wp_get_object_terms($post->ID, 'event_types'); 
        wp_set_post_terms( $post_id, array($names), 'event_types', FALSE);
    }

আমার মেটাবক্স কোড

<select name='post_event_types' id='post_event-types'>
// DISPLAY TERMS AS DROP DOWN OPTIONS
    <?php 
    $names = wp_get_object_terms($post->ID, 'event_types'); 
    $event_types = get_terms('event_types', 'hide_empty=0'); 
    ?>
    <option class='event_type-option' value='' <?php if (!count($names)) echo "selected";?>>Not Assigned</option>
    <?php foreach ($event_types as $event_type) {
        if (!is_wp_error($names) && !empty($names) && !strcmp($event_type->slug, $names[0]->slug)) 
        echo "<option class='event_type-option' value='" . $event_type->slug . "' selected>" . $event_type->name . "</option>\n"; 
        else
        echo "<option class='event_type-option' value='" . $event_type->slug . "'>" . $event_type->name . "</option>\n"; 
    }
    ?>
</select>

উত্তর:


6

আমি অনুভব করেছি যে ডিমাস আমাকে সহায়তা করতে সক্ষম হওয়ার পরে আমি এর উত্তর পোস্ট করব।

তার ডব্লিউপিএলচেমি ক্লাসটি ব্যবহার করে আমি একটি সেভ_অ্যাকশন বর্ণ যুক্ত করেছি যা দেখতে দেখতে দেখতে (নোট করুন যে আমি "বিভাগ" এর জন্য করশ্রয়টি ব্যবহার করছি যা অবশ্যই আপনার কাস্টম শ্রেণিবদ্ধ হতে পারে আপনি পরিবর্তন করতে পারেন):

'save_action'   => 'save_taxonomy_terms',

আমি তারপরে এর জন্য নিম্নলিখিত ফাংশনটি যুক্ত করব:

function save_taxonomy_terms($meta, $post_id) {
wp_set_post_terms($post_id, array($meta['my_terms']), 'category', FALSE);
}

আমার মেটাবক্স কোড যা ট্যাক্সনোমির ড্রপডাউন তালিকাটি দেখায় তা দেখতে:

<label>Event Category:</label>
    <?php $terms = get_terms('category', 'hide_empty=0'); ?>
    <?php $mb->the_field('my_terms'); ?>
    <select name="<?php $mb->the_name(); ?>">
    <option value='' <?php if (!count($terms)) echo "selected";?>>Not Assigned</option>
    <?php foreach ($terms as $term): ?>
    <option value="<?php echo $term->term_id; ?>"<?php $mb->the_select_state($term->term_id); ?><?php echo '>' . $term->name; ?></option>
    <?php endforeach; ?>
    </select>
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.