首页 > 解决方案 > 在 WooCommerce 管理产品列表中为“每页的项目数”设置默认值

问题描述

WordPress 允许每个用户在 Admin Products Page 中为“每页的项目数”设置自己的值/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;
}

在此处输入图像描述

标签: phpwordpresswoocommercehook-woocommercehook-wordpress

解决方案


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 );
}

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

推荐阅读