WordPress.org

Make WordPress Core

Changeset 38854


Ignore:
Timestamp:
10/21/2016 10:32:55 AM (4 years ago)
Author:
swissspidy
Message:

List Tables: Do not show filter button when there are no filter options available.

Props juhise, dipesh.kakadiya, swissspidy.
Fixes #37407.

Location:
trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/wp-admin/includes/class-wp-posts-list-table.php

    r38797 r38854  
    460460<?php
    461461        if ( 'top' === $which && !is_singular() ) {
     462            ob_start();
    462463
    463464            $this->months_dropdown( $this->screen->post_type );
     
    480481            do_action( 'restrict_manage_posts', $this->screen->post_type, $which );
    481482
    482             submit_button( __( 'Filter' ), '', 'filter_action', false, array( 'id' => 'post-query-submit' ) );
     483            $output = ob_get_clean();
     484
     485            if ( ! empty( $output ) ) {
     486                echo $output;
     487                submit_button( __( 'Filter' ), '', 'filter_action', false, array( 'id' => 'post-query-submit' ) );
     488            }
    483489        }
    484490
     
    15531559        <?php if ( current_user_can( $taxonomy->cap->assign_terms ) ) :
    15541560            $taxonomy_name = esc_attr( $taxonomy->name );
    1555    
     1561
    15561562            ?>
    15571563            <label class="inline-edit-tags">
  • trunk/tests/phpunit/tests/admin/includesListTable.php

    r38398 r38854  
    99    protected static $grandchildren = array();
    1010    protected static $post_ids = array();
     11
     12    /**
     13     * @var WP_Posts_List_Table
     14     */
     15    protected $table;
    1116
    1217    function setUp() {
     
    192197    }
    193198
     199    /**
     200     * @ticket 37407
     201     */
     202    function test_filter_button_should_not_be_shown_if_there_are_no_posts() {
     203        // Set post type to a non-existent one.
     204        $this->table->screen->post_type = 'foo';
     205
     206        ob_start();
     207        $this->table->extra_tablenav( 'top' );
     208        $output = ob_get_clean();
     209
     210        $this->assertNotContains( 'id="post-query-submit"', $output );
     211    }
     212
     213    /**
     214     * @ticket 37407
     215     */
     216    function test_months_dropdown_should_not_be_shown_if_there_are_no_posts() {
     217        // Set post type to a non-existent one.
     218        $this->table->screen->post_type = 'foo';
     219
     220        ob_start();
     221        $this->table->extra_tablenav( 'top' );
     222        $output = ob_get_clean();
     223
     224        $this->assertNotContains( 'id="filter-by-date"', $output );
     225    }
     226
     227    /**
     228     * @ticket 37407
     229     */
     230    function test_category_dropdown_should_not_be_shown_if_there_are_no_posts() {
     231        // Set post type to a non-existent one.
     232        $this->table->screen->post_type = 'foo';
     233
     234        ob_start();
     235        $this->table->extra_tablenav( 'top' );
     236        $output = ob_get_clean();
     237
     238        $this->assertNotContains( 'id="cat"', $output );
     239    }
    194240}
Note: See TracChangeset for help on using the changeset viewer.