Skip to:
Content

bbPress.org

Changeset 4586


Ignore:
Timestamp:
12/18/2012 02:56:01 AM (8 years ago)
Author:
jmdodd
Message:

Shortcode iteration for search introduced in #1575.

  • Fix bbp-search shortcode.
  • Introduce bbp-search-form shortcode.
  • Fixes #2107.
Location:
trunk/includes
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/includes/common/shortcodes.php

    r4579 r4586  
    8282            /** Search ********************************************************/
    8383
     84            'bbp-search-form'      => array( $this, 'display_search_form'   ), // Search form
    8485            'bbp-search'           => array( $this, 'display_search'        ), // Search
    8586
     
    611612
    612613    /**
     614     * Display the search form in an output buffer and return to ensure
     615     * post/page contents are displayed first.
     616     *
     617     * @since bbPress (r4585)
     618     *
     619     * @uses get_template_part()
     620     */
     621    public function display_search_form() {
     622
     623        // Start output buffer
     624        $this->start( 'bbp_search_form' );
     625
     626        // Output templates
     627        bbp_get_template_part( 'form', 'search' );
     628
     629        // Return contents of output buffer
     630        return $this->end();
     631    }
     632
     633    /**
    613634     * Display the contents of search results in an output buffer and return to
    614635     * ensure that post/page contents are displayed first.
     
    623644    public function display_search( $attr, $content = '' ) {
    624645
     646        // Sanity check required info
     647        if ( !empty( $content ) )
     648            return $content;
     649
    625650        // Set passed attribute to $search_terms for clarity
    626         $search_terms = $attr['search'];
     651        $search_terms = empty( $attr['search'] ) ? bbp_get_search_terms() : $attr['search'];
     652
     653        // Unset globals
     654        $this->unset_globals();
     655
     656        // Set terms for query
     657        set_query_var( bbp_get_search_rewrite_id(), $search_terms );
    627658
    628659        // Start output buffer
    629660        $this->start( 'bbp_search' );
    630 
    631         // Unset globals
    632         $this->unset_globals();
    633 
    634         // Load the search
    635         bbp_search_query( array( 's' => $search_terms ) );
    636661
    637662        // Output template
  • trunk/includes/search/functions.php

    r4579 r4586  
    2626function bbp_search_query( $new_args = '' ) {
    2727
     28    // Existing arguments
    2829    $query_args = bbp_get_search_query_args();
    29     if ( empty( $query_args ) )
    30         return false;
    3130
    3231    // Merge arguments
     
    5150    // Get search terms
    5251    $search_terms = bbp_get_search_terms();
    53     $retval = !empty( $search_terms ) ? array( 's' => $search_terms ) : false;
     52    $retval = !empty( $search_terms ) ? array( 's' => $search_terms ) : array();
    5453
    5554    return apply_filters( 'bbp_get_search_query_args', $retval );
  • trunk/includes/search/template-tags.php

    r4581 r4586  
    9797        if ( $wp_rewrite->using_permalinks() ) {
    9898
    99             // Search
    100             $base = trailingslashit( bbp_get_search_url() ) . user_trailingslashit( $wp_rewrite->pagination_base . '/%#%/' );
     99            // Shortcode territory
     100            if ( is_page() || is_single() ) {
     101                $base = trailingslashit( get_permalink() );
     102
     103            // Default search location
     104            } else {
     105                $base = trailingslashit( bbp_get_search_url() );
     106
     107            }
     108
     109            // Add pagination base
     110            $base = $base . user_trailingslashit( $wp_rewrite->pagination_base . '/%#%/' );
    101111
    102112        // Unpretty permalinks
     
    106116
    107117        // Add args
    108         $add_args = array( bbp_get_search_rewrite_id() => urlencode( bbp_get_search_terms() ) );
     118        $add_args = isset( $_GET[bbp_get_search_rewrite_id()] ) ? array( bbp_get_search_rewrite_id() => urlencode( bbp_get_search_terms() ) ) : array();
    109119        if ( bbp_get_view_all() )
    110120            $add_args['view'] = 'all';
Note: See TracChangeset for help on using the changeset viewer.