在 WooCommerce 管理产品列表中设置“每页项目数”的默认值

JPa*_*shs 2 php wordpress woocommerce hook-woocommerce hook-wordpress

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;
}
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

7uc*_*f3r 5

表中wp_user_meta有一个元键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 );
}
Run Code Online (Sandbox Code Playgroud)

因此,要回答您的问题,请更改{$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 );
Run Code Online (Sandbox Code Playgroud)