在构建自定义post类型时,在为其创建逻辑时检查自定义列是否存在是明智的。要检查的代码是什么if_exists
还是类似的?
我的CPT列代码如下:
//set up new column to show custom meta value
function site_title_column($column) {
$column[\'views\'] = \'Title\';
return $column;
}
add_filter(\'manage_attorneys_posts_columns\', \'site_title_column\');
//show custom column data
function site_show_title_column($name) {
global $post;
switch ($name) {
case \'views\':
$title = get_post_meta($post->ID, \'_site_professional_title\', true);
echo $title;
}
}
add_action(\'manage_attorneys_posts_custom_column\', \'site_show_title_column\');
会是以下情况吗?
//set up new column to show custom meta value
function site_title_column($column) {
$column[\'views\'] = \'Title\';
//if this value is blank, then it does not currently exist,
//...so output our custom $column:
if ($column != NULL) {
return $column;
} else {
return;
}
add_filter(\'manage_attorneys_posts_columns\', \'site_title_column\');
最合适的回答,由SO网友:Anastis 整理而成
您应该首先检查,然后分配自定义列。$column
应该是真的$columns
传达真正的意义,因为它是一个数组。
因此,您需要检查数组键在赋值之前是否存在,例如isset()
或array_key_exists()
.
最后,自从你site_title_column()
函数修改过滤器的值,您应该始终返回一个值(通常是原始值,可能是修改后的值),只需调用return;
退货NULL
(这很少是需要的)。
我会将您的函数重写为:
function site_title_column( $columns ) {
if ( ! isset( $columns[\'views\'] ) ) {
$columns[\'views\'] = \'Title\';
}
return $columns;
}