Plugin search: Wrap results in a form to fix pagination's `paged` input field.

props jesin, ocean90.
see #18724, for trunk.

git-svn-id: https://develop.svn.wordpress.org/trunk@29829 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
Dominik Schilling (ocean90) 2014-10-03 13:07:18 +00:00
parent 7d2f7c6ceb
commit f7a4e22bdb
3 changed files with 30 additions and 4 deletions

View File

@ -273,7 +273,9 @@ class WP_Plugin_Install_List_Table extends WP_List_Table {
return; return;
} }
if ( 'top' == $which ) { ?> if ( 'top' == $which ) {
wp_referer_field();
?>
<div class="tablenav top"> <div class="tablenav top">
<div class="alignleft actions"> <div class="alignleft actions">
<?php <?php

View File

@ -235,10 +235,15 @@ function install_plugins_favorites_form() {
function display_plugins_table() { function display_plugins_table() {
global $wp_list_table; global $wp_list_table;
if ( current_filter() == 'install_plugins_favorites' && empty( $_GET['user'] ) && ! get_user_option( 'wporg_favorites' ) ) if ( current_filter() == 'install_plugins_favorites' && empty( $_GET['user'] ) && ! get_user_option( 'wporg_favorites' ) ) {
return; return;
}
$wp_list_table->display(); ?>
<form id="plugin-filter" action="" method="post">
<?php $wp_list_table->display(); ?>
</form>
<?php
} }
add_action( 'install_plugins_search', 'display_plugins_table' ); add_action( 'install_plugins_search', 'display_plugins_table' );
add_action( 'install_plugins_popular', 'display_plugins_table' ); add_action( 'install_plugins_popular', 'display_plugins_table' );

View File

@ -24,8 +24,27 @@ if ( is_multisite() && ! is_network_admin() ) {
$wp_list_table = _get_list_table('WP_Plugin_Install_List_Table'); $wp_list_table = _get_list_table('WP_Plugin_Install_List_Table');
$pagenum = $wp_list_table->get_pagenum(); $pagenum = $wp_list_table->get_pagenum();
if ( ! empty( $_REQUEST['_wp_http_referer'] ) ) {
$location = remove_query_arg( '_wp_http_referer', wp_unslash( $_SERVER['REQUEST_URI'] ) );
if ( ! empty( $_REQUEST['paged'] ) ) {
$location = add_query_arg( 'paged', (int) $_REQUEST['paged'], $location );
}
wp_redirect( $location );
exit;
}
$wp_list_table->prepare_items(); $wp_list_table->prepare_items();
$total_pages = $wp_list_table->get_pagination_arg( 'total_pages' );
if ( $pagenum > $total_pages && $total_pages > 0 ) {
wp_redirect( add_query_arg( 'paged', $total_pages ) );
exit;
}
$title = __( 'Add Plugins' ); $title = __( 'Add Plugins' );
$parent_file = 'plugins.php'; $parent_file = 'plugins.php';