2

WordPress allows each user to set his own value for "Number of items per page" in the Admin Products Page /wp-admin/edit.php?post_type=product.

I'm looking for a code to set the same value for "Number of items per page" for all users regardless of your user rol.

Is there a way to do this? Something like:

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

enter image description here

7uc1f3r
  • 28,449
  • 17
  • 32
  • 50
JPashs
  • 13,044
  • 10
  • 42
  • 65

1 Answers1

4

In the wp_user_meta table there is a meta key edit_product_per_page that sets this limit. By default 20.

However, to edit this setting for the admin product list you can use a filter hook from the get_items_per_page() WordPress function

WP_List_Table::get_items_per_page() - Gets the number of items to display on a single 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 );
}

So to answer your question, change {$post_type} with product and then you get:

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 );
7uc1f3r
  • 28,449
  • 17
  • 32
  • 50