我在代码中看到的唯一不同之处是add_filter()
和add_action()
调用(例如回调/函数名),因此您可以对所有类型使用相同的函数:
function update_dog_type_columns( $columns ) {
// your code
return $columns;
}
function update_dog_type_column( $column, $post_id ) {
// your code
}
然后,您可以这样做,为每种(post)类型注册筛选器/操作回调:
foreach ( array( \'poodle\', \'retriever\', \'labrador\', \'etc\' ) as $type ) {
add_filter( "manage_{$type}_posts_columns", \'update_dog_type_columns\' );
add_action( "manage_{$type}_posts_custom_column", \'update_dog_type_column\', 10, 2 );
}
替代解决方案
上述方法很好,但这可能更好地确保您的回调不会针对其他类型运行:
你可以manage_posts_columns
并使用$post_type
有条件运行筛选器/操作的参数:
function update_dog_type_columns( $columns, $post_type ) {
if ( in_array( $post_type, array( \'poodle\', \'retriever\', \'labrador\', \'etc\' ) ) ) {
// your code
}
return $columns;
}
add_filter( \'manage_posts_columns\', \'update_dog_type_columns\', 10, 2 );
然后钩住
manage_pages_custom_column
和/或
manage_posts_custom_column
, 取决于任何“dog”帖子类型是否具有层次结构:
function update_dog_type_column( $column, $post_id ) {
$post_type = get_current_screen()->post_type;
if ( ! in_array( $post_type, array( \'poodle\', \'retriever\', \'labrador\', \'etc\' ) ) ) {
return;
}
switch ( $column ) {
// your code
}
}
add_action( \'manage_pages_custom_column\', \'update_dog_type_column\', 10, 2 ); // for hierarchical post types
add_action( \'manage_posts_custom_column\', \'update_dog_type_column\', 10, 2 ); // non-hierarchical post types
但无论哪种方式,您都只需要两个函数。
所以我希望这有帮助?:)