সুতরাং এটি ঠিক ঘটে যে আমি যে প্রকল্পে কাজ করছি তার জন্য আমার এর মতো কিছু দরকার ছিল। আমি কেবল একটি কাস্টম ধরণের সমস্ত পোস্ট নির্বাচন করার জন্য একটি ক্যোয়ারী লিখেছি, তারপরে আমি যাচাই করেছিলাম যে তারা আমার ব্যবহারযোগ্য বিভাগের প্রকৃত পদগুলি কী।
তারপরে আমি সেই ব্যবহারের সমস্ত শর্তাদি ব্যবহার করে পেয়েছি get_terms()
এবং তারপরে আমি কেবলমাত্র দুটি তালিকায় করেছি, এটি একটি ফাংশনে আবদ্ধ করেছিলাম এবং আমার কাজ শেষ হয়েছিল।
তবে তারপরে আমার আরও বেশি প্রয়োজন তখন কেবল আইডি'র: আমার নামগুলির দরকার ছিল তাই আমি একটি নতুন যুক্তি যুক্ত $fields
করলাম যাতে ফাংশনটি কী ফিরে আসতে হবে তা বলতে পারি। তারপরে আমি অনুভব করেছি যে get_terms
অনেকগুলি আর্গুমেন্ট গ্রহণ করে এবং আমার ফাংশন কেবলমাত্র পদগুলির মধ্যে সীমাবদ্ধ ছিল যা পোস্ট ধরণের দ্বারা ব্যবহৃত হয় তাই আমি আরও একটি যুক্ত করেছিif
বিবৃতি যুক্ত করেছি এবং আপনি সেখানে যান:
কাজ:
/* get terms limited to post type
@ $taxonomies - (string|array) (required) The taxonomies to retrieve terms from.
@ $args - (string|array) all Possible Arguments of get_terms http://codex.wordpress.org/Function_Reference/get_terms
@ $post_type - (string|array) of post types to limit the terms to
@ $fields - (string) What to return (default all) accepts ID,name,all,get_terms.
if you want to use get_terms arguments then $fields must be set to 'get_terms'
*/
function get_terms_by_post_type($taxonomies,$args,$post_type,$fields = 'all'){
$args = array(
'post_type' => (array)$post_type,
'posts_per_page' => -1
);
$the_query = new WP_Query( $args );
$terms = array();
while ($the_query->have_posts()){
$the_query->the_post();
$curent_terms = wp_get_object_terms( $post->ID, $taxonomy);
foreach ($curent_terms as $t){
//avoid duplicates
if (!in_array($t,$terms)){
$terms[] = $c;
}
}
}
wp_reset_query();
//return array of term objects
if ($fields == "all")
return $terms;
//return array of term ID's
if ($fields == "ID"){
foreach ($terms as $t){
$re[] = $t->term_id;
}
return $re;
}
//return array of term names
if ($fields == "name"){
foreach ($terms as $t){
$re[] = $t->name;
}
return $re;
}
// get terms with get_terms arguments
if ($fields == "get_terms"){
$terms2 = get_terms( $taxonomies, $args );
foreach ($terms as $t){
if (in_array($t,$terms2)){
$re[] = $t;
}
}
return $re;
}
}
ব্যবহার:
আপনার যদি কেবলমাত্র টার্ম আইডির একটি তালিকা প্রয়োজন তবে:
$terms = get_terms_by_post_type('tag','','snippet','ID');
আপনার যদি কেবলমাত্র পদ নামগুলির একটি তালিকা প্রয়োজন তবে:
$terms = get_terms_by_post_type('tag','','snippet','name');
আপনার যদি কেবলমাত্র শব্দ পদগুলির একটি তালিকা প্রয়োজন তবে:
$terms = get_terms_by_post_type('tag','','snippet');
এবং যদি আপনাকে get_terms এর মতো অতিরিক্ত যুক্তি ব্যবহার করার প্রয়োজন হয় যেমন: অর্ডারবাই, অর্ডার, শ্রেণিবদ্ধ ...
$args = array('orderby' => 'count', 'order' => 'DESC', 'hide_empty' => 1);
$terms = get_terms_by_post_type('tag',$args,'snippet','get_terms');
উপভোগ করুন!
হালনাগাদ:
নির্দিষ্ট পোস্টের পরিবর্তনের শর্ত গণনা স্থির করতে:
foreach ($current_terms as $t){
//avoid duplicates
if (!in_array($t,$terms)){
$terms[] = $t;
}
}
প্রতি:
foreach ($current_terms as $t){
//avoid duplicates
if (!in_array($t,$terms)){
$t->count = 1;
$terms[] = $t;
}else{
$key = array_search($t, $terms);
$terms[$key]->count = $terms[$key]->count + 1;
}
}