在 WooCommerce 管理产品列表中为 "number of items per page" 设置默认值

Set a default value for "number of items per page" in WooCommerce admin product list

WordPress 允许每个用户在管理产品页面中设置自己的“每页项目数”值 /wp-admin/edit.php?post_type=product

我正在寻找一个代码来为所有用户设置“每页项目数”的相同值,无论您的用户角色如何。

有办法吗?类似于:

add_action('admin_init', 'set_value_for_all_users');
function set_value_for_all_users() {
    // set $Number_of_items_per_page for all users = 20
    $Number_of_items_per_page = 20;
}

wp_user_meta table 中有一个设置此限制的元键 edit_product_per_page。默认 20.

但是,要为管理产品列表编辑此设置,您可以使用 get_items_per_page() WordPress 功能

中的过滤器挂钩

WP_List_Table::get_items_per_page() - 获取要在单个页面上显示的项目数。

protected function get_items_per_page( $option, $default = 20 ) {
    $per_page = (int) get_user_option( $option );
    if ( empty( $per_page ) || $per_page < 1 ) {
        $per_page = $default;
    }
 
    /**
     * Filters the number of items to be displayed on each page of the list table.
     *
     * The dynamic hook name, `$option`, refers to the `per_page` option depending
     * on the type of list table in use. Possible filter names include:
     *
     *  - `edit_{$post_type}_per_page`
     *
     * @since 2.9.0
     *
     * @param int $per_page Number of items to be displayed. Default 20.
     */
    return (int) apply_filters( "{$option}", $per_page );
}

因此,为了回答您的问题,请将 {$post_type} 更改为 product 然后你得到:

function filter_edit_product_per_page ( $per_page ) {
    // The number of items to be displayed on product page of the list table
    $per_page = 50;
    
    return $per_page;
}
add_filter( 'edit_product_per_page', 'filter_edit_product_per_page', 10, 1 );