it-swarm.com.de

Zwei Suchseiten, ein Suchformular

Ich habe ein Suchformular, das ich auf mehreren Seiten platzieren möchte (es wird in verschiedenen Headertypen angezeigt). Dazu verwende ich die Funktion "Suchformular abrufen". Auf meinem Suchformular befinden sich Radiobereiche mit den beiden benutzerdefinierten Beitragstypen "Poster" und "Haus".

Ich habe zwei verschiedene Suchseiten für jeden Beitragstyp. Ich möchte, dass sie getrennt sind, da ich die Suchseiten meiner Navigation hinzufügen möchte, z. "suche nach einem Plakat", "suche nach einem Haus".

Gibt es eine Möglichkeit, wie ich das Suchformular dazu bringen kann, den Benutzer entweder zur Seite "Suche nach einem Haus" oder zur Seite "Suche nach einem Poster" umzuleiten, je nachdem, welches Optionsfeld vor dem Absenden des Eintrags ausgewählt wurde?.

Am liebsten würde ich die nötige Codierung in der Searcform.php-Datei behalten, wenn möglich.

1
Adzay

Dies ist meine Lösung. Ich habe Onclick-Attribute für die Optionsfelder verwendet, um die 'Aktionen' von Elementen im Formular zu ändern.

<form  id="searchme" action="<?php echo site_url(); ?>/postersearch" method="get">
<ul class=" four columns inline-list offset-by-one">
  <li><label for="radio4"><input name="post_type" CHECKED type="radio" id="radio4" onclick="document.getElementById('searchme').action='<?php echo site_url(); ?>/postersearch'; document.getElementById('searchsubmit').value='Search For Posters';"/> Events</label></li>
  <li><label for="radio5"><input name="post_type"  type="radio" id="radio5" onclick="document.getElementById('searchme').action='<?php echo site_url(); ?>/housesearch'; document.getElementById('searchsubmit').value='Search For Houses';"/> Locations</label></li>
</ul>
<input id="searchsubmit" type="submit" value="Search For posters"  style="width:100%"/>             
</form>
1
Adzay

Hängen Sie sich in 'template_include' ein und ändern Sie die Vorlage hier.

Gebildetes Beispiel, nicht getestet:

add_action( 'template_include', 'wpse_96472_search_template' );

function wpse_96472_search_template( $template )
{
    if ( ! is_search() )
        return $template;

    if ( empty ( $_GET['post_type'] ) )
        return $template;

    if ( 'poster' === $_GET['post_type'] )
        return get_template_directory() . '/poster-search-template.php';

    if ( 'house' === $_GET['post_type'] )
        return get_template_directory() . '/house-search-template.php';

    return $template;
}

Sie müssen natürlich die Vorlagennamen und den $_GET-Parameternamen ändern.

1
fuxia