web-dev-qa-db-de.com

Wie lassen sich Wordpress-Suchergebnisse anzeigen?

Ich habe viel Zeit darauf verwendet, herauszufinden, warum meine Suche in meiner benutzerdefinierten Vorlage nicht funktioniert. Bisher konnte ich herausfinden, wie die Datei searchform.php in meine Header-Datei eingefügt wird. Die Datei search.php ist derzeit leer (daher werde ich zu dem Zeitpunkt, wenn ich nach etwas suche, auf eine leere Seite umgeleitet und denke ich definitiv Ich brauche etwas in der search.php-Datei, damit es funktioniert.) Ich las alles über den Wordpress-Codex, konnte aber keine Lösung finden. Nur nützliche Informationen, die ich gefunden habe, waren diese.

http://codex.wordpress.org/Creating_a_Search_Page

Können Sie vorschlagen, was zu tun ist, um die Ergebnisse einer Suche anzuzeigen? Gibt es eine spezielle Abfrage, Funktion usw.? Ich kann es wirklich nirgendwo finden.

meine searchform.php Datei, falls Sie es brauchen.

<form action="<?php echo home_url(); ?>" id="search-form" method="get">
    <input type="text" name="s" id="s" value="type your search" onblur="if(this.value=='')this.value='type your search'"
    onfocus="if(this.value=='type your search')this.value=''" />
    <input type="hidden" value="submit" />
</form>
30
Ilja

Grundsätzlich müssen Sie die Wordpress-Schleife in Ihre search.php-Vorlage einschließen, um die Suchergebnisse zu durchlaufen und als Teil der Vorlage anzuzeigen.

Im Folgenden finden Sie ein sehr einfaches Beispiel aus Die WordPress-Theme-Suchvorlage und Seitenvorlage bei ThemeShaper.

<?php
/**
 * The template for displaying Search Results pages.
 *
 * @package Shape
 * @since Shape 1.0
 */

get_header(); ?>

        <section id="primary" class="content-area">
            <div id="content" class="site-content" role="main">

            <?php if ( have_posts() ) : ?>

                <header class="page-header">
                    <h1 class="page-title"><?php printf( __( 'Search Results for: %s', 'shape' ), '<span>' . get_search_query() . '</span>' ); ?></h1>
                </header><!-- .page-header -->

                <?php shape_content_nav( 'nav-above' ); ?>

                <?php /* Start the Loop */ ?>
                <?php while ( have_posts() ) : the_post(); ?>

                    <?php get_template_part( 'content', 'search' ); ?>

                <?php endwhile; ?>

                <?php shape_content_nav( 'nav-below' ); ?>

            <?php else : ?>

                <?php get_template_part( 'no-results', 'search' ); ?>

            <?php endif; ?>

            </div><!-- #content .site-content -->
        </section><!-- #primary .content-area -->

<?php get_sidebar(); ?>
<?php get_footer(); ?>
17
James Hebden

sie müssen die Wordpress-Schleife in Ihre search.php .__ einfügen. Dies ist ein Beispiel

search.php Vorlagendatei:

<?php get_header(); ?>
<?php
$s=get_search_query();
$args = array(
                's' =>$s
            );
    // The Query
$the_query = new WP_Query( $args );
if ( $the_query->have_posts() ) {
        _e("<h2 style='font-weight:bold;color:#000'>Search Results for: ".get_query_var('s')."</h2>");
        while ( $the_query->have_posts() ) {
           $the_query->the_post();
                 ?>
                    <li>
                        <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
                    </li>
                 <?php
        }
    }else{
?>
        <h2 style='font-weight:bold;color:#000'>Nothing Found</h2>
        <div class="alert alert-info">
          <p>Sorry, but nothing matched your search criteria. Please try again with some different keywords.</p>
        </div>
<?php } ?>

<?php get_sidebar(); ?>
<?php get_footer(); ?>
29
Said Erraoudy

Ich verwende searchform.php- und search.php-Dateien, wie bereits erwähnt, aber hier gebe ich den eigentlichen Code an. 

Das Erstellen einer Suchseitecodex hilft hier und #Creating_a_Search_Page_Template zeigt die Suchabfrage. 

In meinem Fall übergebe ich die $search_query-Argumente an die WP_QueryClass (die feststellen kann, ob es sich um eine Suchanfrage handelt!). Ich führe dann The Loop aus, um die Postinformationen anzuzeigen, die ich möchte, was in meinem Fall der the_permalink und the_title ist.

Suchfeld-Formular:

<form class="search" method="get" action="<?php echo home_url(); ?>" role="search">
  <input type="search" class="search-field" placeholder="<?php echo esc_attr_x( 'Search …', 'placeholder' ) ?>" value="<?php echo get_search_query() ?>" name="s" title="<?php echo esc_attr_x( 'Search for:', 'label' ) ?>" />
  <button type="submit" role="button" class="btn btn-default right"/><span class="glyphicon glyphicon-search white"></span></button>
</form>

search.php Vorlagendatei:

<?php
    global $query_string;
    $query_args = explode("&", $query_string);
    $search_query = array();

    foreach($query_args as $key => $string) {
      $query_split = explode("=", $string);
      $search_query[$query_split[0]] = urldecode($query_split[1]);
    } // foreach

    $the_query = new WP_Query($search_query);
    if ( $the_query->have_posts() ) : 
    ?>
    <!-- the loop -->

    <ul>    
    <?php while ( $the_query->have_posts() ) : $the_query->the_post(); ?>
        <li>
            <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
        </li>   
    <?php endwhile; ?>
    </ul>
    <!-- end of the loop -->

    <?php wp_reset_postdata(); ?>

<?php else : ?>
    <p><?php _e( 'Sorry, no posts matched your criteria.' ); ?></p>
<?php endif; ?>
10
Brownrice

Prüfen Sie, ob Ihre Vorlage im Ordner themesearch.php und searchform.php enthält oder nicht.

5
blueray

WordPress enthält Tags, Kategorien und Taxonomien in den Suchergebnissen

Dieser Code stammt aus http://atiblog.com/custom-search-results/

Einige Funktionen hier stammen von einem zwanzigjährigen Thema. Weil es zu diesem Thema gemacht wird. 

In diesem Codebeispiel können Sie Tags, Kategorien oder benutzerdefinierte Taxonomien in Ihre Suche einbeziehen. Zeigen Sie die Beiträge mit diesen Tags oder Kategorien an. 

Sie müssen dazu die search.php Ihres Designs ändern.

<?php
$search=get_search_query();
$all_categories = get_terms( array('taxonomy' => 'category','hide_empty' => true) ); 
$all_tags = get_terms( array('taxonomy' => 'post_tag','hide_empty' => true) );
//if you have any custom taxonomy
$all_custom_taxonomy = get_terms( array('taxonomy' => 'your-taxonomy-slug','hide_empty' => true) );

$mcat=array();
$mtag=array();
$mcustom_taxonomy=array();

foreach($all_categories as $all){
$par=$all->name;
if (strpos($par, $search) !== false) {
array_Push($mcat,$all->term_id);
}
}

foreach($all_tags as $all){
$par=$all->name;
if (strpos($par, $search) !== false) {
array_Push($mtag,$all->term_id);
}
}

foreach($all_custom_taxonomy as $all){
$par=$all->name;
if (strpos($par, $search) !== false) {
array_Push($mcustom_taxonomy,$all->term_id);
}
}

$matched_posts=array();
$args1= array( 'post_status' => 'publish','posts_per_page' => -1,'tax_query' =>array('relation' => 'OR',array('taxonomy' => 'category','field' => 'term_id','terms' =>$mcat),array('taxonomy' => 'post_tag','field' => 'term_id','terms' =>$mtag),array('taxonomy' => 'custom_taxonomy','field' => 'term_id','terms' =>$mcustom_taxonomy)));

$the_query = new WP_Query( $args1 );
if ( $the_query->have_posts() ) {
while ( $the_query->have_posts() ) {
$the_query->the_post();
array_Push($matched_posts,get_the_id());
//echo '<li>' . get_the_id() . '</li>';
}
wp_reset_postdata();
} else {

}

?>
<?php
// now we will do the normal wordpress search
$query2 = new WP_Query( array( 's' => $search,'posts_per_page' => -1 ) );
if ( $query2->have_posts() ) {
while ( $query2->have_posts() ) {
$query2->the_post();
array_Push($matched_posts,get_the_id());
}
wp_reset_postdata();
} else {

}
$matched_posts= array_unique($matched_posts);
$matched_posts=array_values(array_filter($matched_posts));
//print_r($matched_posts);
?>

<?php
$paged = ( get_query_var('paged') ) ? get_query_var('paged') : 1;
$query3 = new WP_Query( array( 'post_type'=>'any','post__in' => $matched_posts ,'paged' => $paged) );
if ( $query3->have_posts() ) {
while ( $query3->have_posts() ) {
$query3->the_post();
get_template_part( 'template-parts/content/content', 'excerpt' );
}
twentynineteen_the_posts_navigation();
wp_reset_postdata();
} else {

}
?>