それで、私の質問はあなたが絵で見るものとほとんど同じです。私のカスタム投稿タイプの "Products"で、SEO Yoastが WP_List_Table というメインテーブルに追加したような追加の列を追加する方法はありますか。項目の「在庫切れ」のcustom_fieldがtrueまたはfalseに設定されているかどうかに応じて、在庫切れ機能をどのように表示するかについてコードを考え出しました。問題ありませんが、コード内のテーブルのその領域をどのようにターゲットにできますか。私はそれがフィルタであると思います、それがどのように働くかについて確かにするのではなく、誰かが私を助けることができるならば本当にそれを認めます。
私はあなたが必要としているのはポスト編集画面にカスタムカラムを追加するためのフィルタとアクションのセットであると思います:
manage_edit-post_type_sortable_columns
と組み合わせて使う必要があるかもしれません。たとえば、次のコードを使用して、カスタムメタフィールドの投稿ヒット情報を含むソート可能な列を追加します。
add_filter( 'manage_edit-post_columns', 'add_new_columns' );
add_filter( 'manage_edit-post_sortable_columns', 'register_sortable_columns' );
add_filter( 'request', 'hits_column_orderby' );
add_action( 'manage_posts_custom_column' , 'custom_columns' );
/**
* Add new columns to the post table
*
* @param Array $columns - Current columns on the list post
*/
function add_new_columns($columns){
$column_meta = array( 'hits' => 'Hits' );
$columns = array_slice( $columns, 0, 6, true ) + $column_meta + array_slice( $columns, 6, NULL, true );
return $columns;
}
// Register the columns as sortable
function register_sortable_columns( $columns ) {
$columns['hits'] = 'hits';
return $columns;
}
//Add filter to the request to make the hits sorting process numeric, not string
function hits_column_orderby( $vars ) {
if ( isset( $vars['orderby'] ) && 'hits' == $vars['orderby'] ) {
$vars = array_merge( $vars, array(
'meta_key' => 'hits',
'orderby' => 'meta_value_num'
) );
}
return $vars;
}
/**
* Display data in new columns
*
* @param $column Current column
*
* @return Data for the column
*/
function custom_columns($column) {
global $post;
switch ( $column ) {
case 'hits':
$hits = get_post_meta( $post->ID, 'hits', true );
echo (int)$hits;
break;
}
}