@ এসমাইলসের উত্তর থেকে আর একটি সামান্য উন্নতি।
আমার ক্ষেত্রে এমন ঘটনা ঘটেছে যেখানে আইডি দুটি স্ট্রিং হিসাবে সংরক্ষণ করা হয়েছে (যেমন কোনও ফর্ম ইনপুট থেকে নেওয়া হয়েছিল) এবং পূর্ণসংখ্যা হিসাবে (যেমন update_post_meta($post_id, authorized_users', array(get_current_user_id()));
)। এটি একধরনের সুপরিচিত ইস্যুর মতো wp_set_object_terms()
যেখানে আপনি শর্তাদি সেট করতে টার্ম আইডি ব্যবহার করতে পারেন, তবে আপনি যদি প্রথমে তাদের পূর্ণসংখ্যার হিসাবে না ফেলে থাকেন তবে আপনি তাদের নাম হিসাবে এই সংখ্যাগুলির সাথে নতুন পদ তৈরি করার প্রায় 50% সম্ভাবনা রাখবেন পরিবর্তে.
এর ফলে সেগুলিকে সিরিয়ালযুক্ত অ্যারেতে আলাদাভাবে সংরক্ষণ করা হতে পারে, যেমনটি আমার পরীক্ষার সাইটের ডাটাবেস থেকে ঠিক এরকম কেসের অংশ থেকে পাওয়া যায়:
a:1:{i:0;s:1:"1";} // 's' for 'string', also note the double quotes
a:1:{i:0;i:1;} // 'i' for 'integer', no quotes
উপরের উভয়টি, যখন খাওয়ানো print_r()
হবে ততক্ষণ রেন্ডার হবে
Array
(
[0] => 1
)
এটি ঠিক করার জন্য, আমি কোয়েরির meta_query
একটি relation
এবং অন্য সংস্করণ যুক্ত করে একটি সামান্য ঝাঁকুনি দিয়েছি যা স্ট্রিংয়ের পরিবর্তে পূর্ণসংখ্যা হিসাবে মানটি ফেলে।
এখানে চূড়ান্ত ফলাফল:
'meta_query' => array(
'relation' => 'OR', // Lets it know that either of the following is acceptable
array(
'key' => 'bcm_enm_authorized_users',
'value' => serialize(strval(get_current_user_id())), // Saved as string
'compare' => 'LIKE'
),
array(
'key' => 'bcm_enm_authorized_users',
'value' => serialize(intval(get_current_user_id())), // Saved as integer
'compare' => 'LIKE'
),
),
সম্পাদনা: ঠিক বুঝতে পেরেছি যে এই পদ্ধতিটি অ্যারে সূচকগুলির সাথে সংঘর্ষের ঝুঁকি চালাতে পারে, যার ফলে যদি তারা অ্যারেতে না থাকে তবে উপকরণগুলিতে অবৈধ অ্যাক্সেসের অনুমতি দিতে পারে, তবে তাদের ব্যবহারকারীর আইডি সূচক হিসাবে উপস্থিত হয়। যেমন, যখন এই কাজ যদি আপনার সমস্যা আলোচনা করেছি, ভাল অনুশীলন তা নিশ্চিত করার জন্য কোনো মান আপনার জন্য তাদের যাতে আপনি @sMyles 'পদ্ধতি পরিবর্তে ব্যবহার করতে পারেন সংরক্ষণ করার পূর্বে স্ট্রিং হিসাবে নিক্ষেপ করা হয় অনুসন্ধান করতে চান হয়।