WordPress管理区的用户页面中有一个帖子计数。我有一个自定义的post类型事件。是否有一些钩子可用于将我的事件计数添加到post计数,或者为事件计数添加一列?
如何在用户管理页面中显示自定义帖子类型计数
2 个回复
最合适的回答,由SO网友:gmazzap 整理而成
有两个非常没有文档记录的钩子\'manage_users_custom_column\'
和\'manage_users_columns\'
可以用于范围的。
它们以相同的方式工作\'manage_posts_custom_column\'
和\'manage_posts_columns\'
有更好的文档记录,请参阅Codex.
所以你可以这样做:
/*
* Add Event Column
*/
function users_events_column( $cols ) {
$cols[\'user_events\'] = \'Events\';
return $cols;
}
/*
* Print Event Column Value
*/
function user_events_column_value( $value, $column_name, $id ) {
if( $column_name == \'user_events\' ) {
global $wpdb;
$count = (int) $wpdb->get_var( $wpdb->prepare(
"SELECT COUNT(ID) FROM $wpdb->posts WHERE
post_type = \'events\' AND post_status = \'publish\' AND post_author = %d",
$id
) );
return $count;
}
}
add_filter( \'manage_users_custom_column\', \'user_events_column_value\', 10, 3 );
add_filter( \'manage_users_columns\', \'users_events_column\' );
仅确保在内部SQL查询中使用正确的post类型sluguser_events_column_value
功能SO网友:Ituk
以下是对@gmazzap答案的改进,包括到帖子列表的链接:
/*
* Add Location (business) Column to user screen
*/
function bayadaim_users_location_column( $cols ) {
$cols[\'user_locations\'] = \'YOUR_COLUMN_NAME\';
return $cols;
}
/*
* Print Event Column Value
*/
function bayadaim_users_location_column_value( $value, $column_name, $id ) {
if( $column_name == \'user_locations\' ) {
global $wpdb;
$count = (int) $wpdb->get_var( $wpdb->prepare(
"SELECT COUNT(ID) FROM $wpdb->posts WHERE
post_type = \'YOUR_POST_TYPE\' AND post_status = \'publish\' AND post_author = %d",
$id
) );
$link = \'<a href="\' . admin_url() . \'edit.php?post_type=location\' . \'&author=\' . $id . \'" title="Posts location">\' . $count . \'</a>\';
$return = ($count > 0) ? $link : $count;
return $return;
}
}
add_filter( \'manage_users_custom_column\', \'bayadaim_users_location_column_value\', 10, 3 );
add_filter( \'manage_users_columns\', \'bayadaim_users_location_column\' );
结束