ধরে নিলাম আমি প্রশ্নটি বুঝতে পেরেছি, আপনাকে যা করতে হবে সেটি হ'ল অ্যাডমিনের পৃষ্ঠাগুলি পরিচালনা করার জন্য কলাম শিরোনাম এবং কলাম মান সম্পর্কিত দুটি হুক। তারা 'manage_{$type}_columns'
এবং 'manage_{$type}_custom_column'
আপনার ব্যবহারের ক্ষেত্রে {$type}
কোথায় users
।
'manage_users_columns'
হুক
এটি প্রথমটি সহজ, এটি আপনাকে কলামের শিরোনাম এবং তাই উপলব্ধ কলামগুলি উল্লেখ করতে দেয়। ওয়ার্ডপ্রেস "পোস্টস" কলামটির মানটিকে হার্ডকোড করে তাই আপনি এটি পরিবর্তন করতে চাইলে আমরা কেবল এটির সাথে সরিয়ে ফেলব unset()
এবং তারপরে একই শিরোনাম সহ একটি নতুন কলাম যুক্ত করব যা পরিবর্তে এর শনাক্তকারী রয়েছে 'custom_posts'
:
add_action('manage_users_columns','yoursite_manage_users_columns');
function yoursite_manage_users_columns($column_headers) {
unset($column_headers['posts']);
$column_headers['custom_posts'] = 'Posts';
return $column_headers;
}
'manage_users_custom_column'
হুক
এরপরে আপনাকে 'manage_users_custom_column'
হুক ব্যবহার করতে হবে যা কেবল অ-মানক কলামগুলির জন্য ডাকা হবে। আমরা $column_name=='custom_posts'
ভবিষ্যতে নতুন ব্যবহারকারীর কলাম যুক্ত করার ক্ষেত্রে আমাদের কোডটিকে শক্তিশালী করার জন্য পরীক্ষা করি এবং তারপরে আমি লিখেছি _yoursite_get_author_post_type_counts()
যে ফাংশনটি আমি লিখেছি তার থেকে ব্যবহারকারীর পোস্টের ধরণগুলি ধরে ফেলব। আমি তখন এই ফরম্যাট করতে কয়েকটি উপায় সঙ্গে অভিনয় কিন্তু সিদ্ধান্ত নিয়েছে একটি HTML <table>
সবচেয়ে উপযুক্ত ছিল (যেহেতু হয় ডেটার একটি টেবিল) । যদি কোনও টেবিল আপনার জন্য কাজ না করে আমি ধরে নিই যে আপনি খুব সহজেই বিভিন্ন মার্কআপ উত্পন্ন করতে সক্ষম হবেন:
add_action('manage_users_custom_column','yoursite_manage_users_custom_column',10,3);
function yoursite_manage_users_custom_column($custom_column,$column_name,$user_id) {
if ($column_name=='custom_posts') {
$counts = _yoursite_get_author_post_type_counts();
$custom_column = array();
if (isset($counts[$user_id]) && is_array($counts[$user_id]))
foreach($counts[$user_id] as $count)
$custom_column[] = "\t<tr><th>{$count['label']}</th>" .
"<td>{$count['count']}</td></tr>";
$custom_column = implode("\n",$custom_column);
}
if (empty($custom_column))
$custom_column = "No Posts!";
else
$custom_column = "<table>\n{$custom_column}\n</table>";
return $custom_column;
}
প্রতিটি ব্যবহারকারীর / লেখকের জন্য পোস্টের ধরণের মাধ্যমে পোস্টের গণনা পাওয়া
সবশেষে লেখক / ব্যবহারকারীর পোস্ট টাইপ অনুসারে পোস্ট গণনাগুলির পুনরুদ্ধার রয়েছে। সাধারণত WP_Query()
পোস্টগুলিতে অনুসন্ধান চলমান থাকাকালীন আমি ব্যবহারের সাথে লেগে থাকার চেষ্টা করি তবে এই কোয়েরিতে আরও অনেক হুক ব্যবহার করা দরকার হত "দুষ্টু" হওয়া এবং এটি একটিতে সবই করা সহজ মনে হয়েছিল।
আমি কোন পোস্টে বাদ দেওয়া $post->post_type
হয় 'revision'
অথবা 'nav_menu_item'
কিন্তু বাকি 'attachments'
। আমার করা কয়েকটি বাদ না দিয়ে আপনি যে পোস্টের পোস্ট চান তা স্পষ্টভাবে অন্তর্ভুক্ত করা আপনার পক্ষে ভাল বলে মনে হতে পারে।
আমি $post->post_status
কেবল 'publish'
এবং এর জন্যও ফিল্টার করেছি 'pending'
। আপনি যদি অন্তর্ভুক্ত করতে চান 'future'
, 'private'
এবং / অথবা 'draft'
আপনার কোডটিতে পরিবর্তনগুলি করতে হবে।
প্রতিটি পৃষ্ঠা লোডের জন্য আমি কেবল _yoursite_get_author_post_type_counts()
একবার এই ফাংশনটি কল করি এবং তারপরে প্রতিটি ব্যবহারকারীর জন্য কল করার চেয়ে স্থিতিশীল ভেরিয়েবলের মধ্যে সঞ্চয় করি। আমি লেখক / ব্যবহারকারী আইডি দ্বারা সূচিত একটি অ্যারেতে পোস্ট উপাদানের সাথে পোস্ট টাইপের নাম সহ একটি অ্যারে ধারণ করে 'label'
এবং অবশ্যই একই নামযুক্ত উপাদানটিতে গণনা:
function _yoursite_get_author_post_type_counts() {
static $counts;
if (!isset($counts)) {
global $wpdb;
global $wp_post_types;
$sql = <<<SQL
SELECT
post_type,
post_author,
COUNT(*) AS post_count
FROM
{$wpdb->posts}
WHERE 1=1
AND post_type NOT IN ('revision','nav_menu_item')
AND post_status IN ('publish','pending')
GROUP BY
post_type,
post_author
SQL;
$posts = $wpdb->get_results($sql);
foreach($posts as $post) {
$post_type_object = $wp_post_types[$post_type = $post->post_type];
if (!empty($post_type_object->label))
$label = $post_type_object->label;
else if (!empty($post_type_object->labels->name))
$label = $post_type_object->labels->name;
else
$label = ucfirst(str_replace(array('-','_'),' ',$post_type));
if (!isset($counts[$post_author = $post->post_author]))
$counts[$post_author] = array();
$counts[$post_author][] = array(
'label' => $label,
'count' => $post->post_count,
);
}
}
return $counts;
}
ফলাফল ইউআই
ওয়ার্ডপ্রেস .1.০.১ এর আমার পরীক্ষার ইনস্টলটিতে এটি প্রয়োগ করা মনে হচ্ছে:
(সূত্র: মাইকসচিনেল.কম )
সম্পূর্ণ কোডটি ডাউনলোড করুন
আপনি জিস্ট থেকে সম্পূর্ণ কোডটি ডাউনলোড করতে পারেন :
আপনি এই থিমের functions.php
ফাইলটিতে এই কোডটি অনুলিপি করতে পারেন বা আপনি যে কোনওটিকেই বেছে নিন কোনও প্লাগইনে ফাইলটি স্টোর করতে পারেন।
আশাকরি এটা সাহায্য করবে!