افزودن ستون به جداول مدیریت در وردپرس:
گاهی اوقات ما نیاز داریم برای دیدن مقدار یا وضعیتی ستون یا ستونهایی به یکی از جداول مدیریت در وردپرس اضافه کنیم برای این کار از هوکهای مختص این کار استفاده میکنیم
manage_edit-{post_type}_columns
manage_{post_type}_posts_custom_column
function add_custom_column_to_post_type_table($columns) {
$columns[‘id’] = ‘ID’;
return $columns;
}
add_filter(‘manage_edit-{post_type}_columns’, ‘add_custom_column_to_post_type_table’);
// Display the value of the custom column
function display_custom_column_value($column, $post_id) {
if ($column === ‘id’) {
echo $post_id;
}
}
add_action(‘manage_{post_type}_posts_custom_column’, ‘display_custom_column_value’, 10, 2);
بجای {post_type} نام post type که میخواهیم ستون را به آن اضافه کنیم قرار میدهیم.اگر نام پست تایپ مورد نظر را ندارید وارد همان بخش شده و آدرس بار را به دنبال مقدار post_type جستجو کنید مثلا برای محصولات ووکامرس به صورت زیر میباشد
wp-admin/edit.php?post_type=product
که یعنی مقدار post_type محصولات ووکامرس product میباشد .
خب برای افزودن ستون ایدی محصول به به صورت زیر عمل میکنیم اگر نمیخواهید کدهای خود را در قالب یک پلاگین قرار دهید میتوانید کدهای خود را در فایل functions.php قالب قرار دهید تا اجرا شوند.
function add_custom_id_column($columns) {
$columns[‘id’] = ‘ID’;
return $columns;
}
add_filter(‘manage_edit-product_columns’, ‘add_custom_id_column’);
// Display the value of the custom column
function display_custom_id_column($column, $post_id) {
if ($column === ‘id’) {
echo $post_id;
}
}
add_action(‘manage_product_posts_custom_column’, ‘display_custom_id_column’, 10, 2);
به همین راحتی.خب با این کار ستون id به انتهای جدول اضافه خواهد شد برای تغییر مکان قرار گیری ستون مثلا بعنوان ستون سوم قرار گیرد به صورت زیر عمل میکنیم
function add_custom_id_column($columns) {
$new_columns = array_slice($columns, 0, 2) ;
$new_columns[‘id’] = ‘ID’;
$remaining_columns = array_slice($columns, 2);
$new_columns = array_merge($new_columns, $remaining_columns);
return $new_columns;
}
add_filter(‘manage_edit-product_columns’, ‘add_custom_id_column’);
برای افزودن ستون sortable از هوکهای زیر استفاده میکنیم
manage_edit-{post_pyte}_sortable_columns
pre_get_posts
خب میخواهیم شماره موبایل را به جدول پستها اضافه کنیم
function add_custom_sortable_column($columns) {
$columns[‘mobile’] = ‘mobile’;
return $columns;
}
add_filter(‘manage_edit-post_sortable_columns’, ‘add_custom_sortable_column’);
function display_custom_id_column($column, $post_id) {
if ($column === ‘mobile’)
echo get_post_meta($post_id,’mobile’,true);
}
add_action(‘manage_post_posts_custom_column’, ‘display_custom_id_column’, 10, 2);
function handle_custom_column_sorting($query) {
if (is_admin() && $query->is_main_query() && $query->get(‘orderby’) === ‘mobile’) {
$query->set(‘orderby’, ‘meta_value’);
$query->set(‘meta_key’, ‘mobile’);
}
}
add_action(‘pre_get_posts’, ‘handle_custom_column_sorting’);
برای سورت کردن از هوک pre_get_posts استفاده میکنیم و چون از مقدار موبایل در متای پست ذخیره شده مقادیر orderby برابر meta_value و مقدار meta_key برابر mobile که نام فیلد ذخیره شدن موبایل در جدول متا میباشد قرار میگیرد.
دیدگاهتان را بنویسید لغو پاسخ