我已经创建了一个自定义帖子类型。我还为我的自定义帖子类型添加了一个元框。我现在要做的是将我的元框作为列添加到我的自定义post表中。
我的自定义帖子
add_action( \'init\', \'create_post_type\' );
// Create my custom post
function create_post_type() {
register_post_type( \'spark_stars\',
array(\'labels\' =>
array(
\'name\' => __( \'Stars\' ),
\'singular_name\' => __( \'Star\' )),
\'public\' => true,
\'has_archive\' => true,
\'supports\' => array( \'title\', \'editor\', \'thumbnail\'),
)
);
}
add_action(\'add_meta_boxes\',\'stars_meta_box\');
// Create my meta box
function stars_meta_box(){
global $post;
add_meta_box(\'first_name_meta_box\',\'First Name\',
\'first_name_meta_box_html\',\'spark_stars\',\'normal\',\'default\');
}
// Create meta box html
function first_name_meta_box_html(){
wp_nonce_field(\'first_name\',\'first_name_meta_box_nonce\');
$value = get_post_meta(get_the_ID(), \'first_name_meta_box_key\', true ); ?>
<label>First Name: </label>
<input type="text" name="fname"
value="<?php echo esc_attr($value); ?>"/>
<?php {
add_action(\'manage_spark_stars_posts_columns\',.....) // is this the function?
add_filter(\'manage_spark_stars_posts_columns\',.....) // is this the function?
如何将此元框作为自定义帖子表中的一列获取,以及如何将每个帖子的缩略图作为自定义帖子表中的一列获取?
最合适的回答,由SO网友:Welcher 整理而成
我认为manage_{$post_type}_posts_columns
过滤器就是你要找的。然后可以使用manage_posts_custom_column
管理帖子列表视图中每列内容的操作。
编辑::
要向自定义帖子类型添加自定义列,需要使用manage_{$post_type}_posts_columns
哪里$post_type
是用于注册自定义帖子类型的名称。如果是你的话spark_stars
.
这个$columns
变量是当前列的数组。您可以根据需要向其添加或完全覆盖它。
add_filter(\'manage_spark_stars_posts_columns\',\'filter_cpt_columns\');
function filter_cpt_columns( $columns ) {
// this will add the column to the end of the array
$columns[\'first_name\'] = \'First Name\';
//add more columns as needed
// as with all filters, we need to return the passed content/variable
return $columns;
}
下一步是告诉WordPress需要在列中显示哪些内容。这可以通过
manage_posts_custom_column
行动下面的方法输出
First Name
如果post元存在,或者如果不存在,则为默认字符串。
add_action( \'manage_posts_custom_column\',\'action_custom_columns_content\', 10, 2 );
function action_custom_columns_content ( $column_id, $post_id ) {
//run a switch statement for all of the custom columns created
switch( $column_id ) {
case \'first_name\':
echo ($value = get_post_meta($post_id, \'first_name_meta_box_key\', true ) ) ? $value : \'No First Name Given\';
break;
//add more items here as needed, just make sure to use the column_id in the filter for each new item.
}
}
希望这更清楚!