MANAGE_POSTS_CUSTOM_COLUMN,在循环中使用增量显示序列号

时间:2016-09-27 作者:Kiran Dash

我知道manage_posts_custom_column, 用于向自定义帖子类型页面添加或删除自定义列。功能kiran_custom_column_content 连接到函数的被称为页面上所有帖子的循环。现在,我想在数字列下显示序列号。那么,我该怎么做呢?如果它是一个while循环,可能是我可以将一个变量设置为0,然后递增它。但是,如何在函数外部设置变量,并在每次调用函数时递增它呢。我试图全局声明一个变量,然后在函数中递增它。但它不起作用。

add_action( \'manage_sponsor_posts_custom_column\', \'kiran_custom_column_content\', 10, 2 );

global $postNumber;
$postNumber = 1;

function kiran_custom_column_content( $column, $post_id ) {

    switch ( $column ){
        case \'number\':
        echo $postNumber;
        break;

        case \'carousel\':
        echo \'Carousel\';    
        break;
    }
 $postNumber++;
}

1 个回复
最合适的回答,由SO网友:Dave Romsey 整理而成

此代码将为每个帖子添加一个索引值,该值由$wp_query->current_post, 每页的帖子数,以及当前正在查看的页面。

add_filter( \'manage_posts_columns\', \'wpse240648_manage_posts_columns_index\');
function wpse240648_manage_posts_columns_index($columns) {
    $columns[\'index\'] = __( \'Index\', \'your-text-domain\' );
    return $columns;
}

add_action( \'manage_posts_custom_column\',  \'wpse240648_manage_posts_custom_column_index\', 10, 3 );
function wpse240648_manage_posts_custom_column_index( $column, $post_id ) {

    if ( \'index\' == $column ) {
        global $wp_query;
        // This line is needed to set up the query so that $wp_query->current_post works.
        $wp_query->the_post();

        $page_number = ( get_query_var( \'paged\' ) ) ? get_query_var( \'paged\' ) : 0;

        if ( $page_number > 1 ) {
            $current_index = ( $page_number * $wp_query->query_vars[\'posts_per_page\'] ) - $wp_query->query_vars[\'posts_per_page\'];
        } else {
            $current_index = 0;
        }

        echo esc_html( $wp_query->current_post + 1 + $current_index );      
    }
}
通过适当更改挂钩名称,此代码可适用于其他帖子类型:

manage_{$post_type}_posts_columns
manage_{$post_type}_posts_custom_column

相关推荐

MANAGE_USERS_CUSTOM_COLUMNS筛选器不触发回调函数

我使用以下函数向users表中添加了一些自定义列 public function modify_users_columns( $column_headers ) { //Remove email, role, and posts column unset( $column_headers[\'email\'], $column_headers[\'role\'], $column_headers[\'posts\'] ); //Add sponsor