So suchen Sie nur im Beitragstitel – wp_query

Lesezeit: 2 Minuten

Avigos Benutzeravatar
Avigo

Ich habe dem Filterformular für Beiträge ein Textfeld hinzugefügt und verwende den Parameter s=, damit die Suche funktioniert. Aber wie sucht man nur im Titel des Beitrags (nicht im Inhalt)?

HTML:

<input type="text" name="search" placeholder="Search..." value="">
<button>Filter</button>

PHP:

    $args = array(
        'post_type' => $_POST['posttype'], 
        'orderby' => $_POST['orderby'], 
        'order' => $_POST['order'],
        's' => $_POST['search']
    );

Benutzeravatar von Tanmay Patel
Tanmay Patel

Suchen Sie die Datei, in der Sie die Suchfunktion implementieren müssen, und fügen Sie den folgenden Code zu Ihrer Datei hinzu.

$args = array(
    'post_type'     => 'post',
    'post_status'   => 'publish',
    'orderby' => $_POST['orderby'], 
    'order' => $_POST['order'],
    'search_prod_title' => $_POST['search'],
);
add_filter( 'posts_where', 'title_filter', 10, 2 );
$query = new WP_Query($args);
remove_filter( 'posts_where', 'title_filter', 10, 2 );

Um den Titel in Ihrer WordPress-Abfrage zu suchen, müssen Sie der Datei functions.php Ihres WordPress-Themes eine Funktion hinzufügen.

Version 3.9

function title_filter( $where, &$wp_query ){
    global $wpdb;
    if ( $search_term = $wp_query->get( 'search_prod_title' ) ) {
        $where .= ' AND ' . $wpdb->posts . '.post_title LIKE \'%' . esc_sql( like_escape( $search_term ) ) . '%\'';
    }
    return $where;
}

Veraltet 4.0.0 Verwenden Sie wpdb::esc_like()
https://make.wordpress.org/core/2014/06/20/like_escape-is-deprecated-in-wordpress-4-0/

function title_filter( $where, &$wp_query ){
    global $wpdb;
    if ( $search_term = $wp_query->get( 'search_prod_title' ) ) {
        $where .= ' AND ' . $wpdb->posts . '.post_title LIKE \'%' . esc_sql( $wpdb->esc_like( $search_term ) ) . '%\'';
    }
    return $where;
}

  • @Avigo Sie können Code wie diesen festlegen prntscr.com/syxfwf und teste es.

    – Tanmay Patel

    13. Juni 2020 um 8:21 Uhr

  • Danke Tanmay! hat die Arbeit erledigt und mir Zeit und Kopfschmerzen beim Debuggen erspart.

    – Ruvee

    7. März 2021 um 3:15 Uhr

  • Funktion like_escape ist seit Version 4.0.0 veraltet! Verwenden Sie stattdessen wpdb::esc_like()

    – Popnudeln

    30. September 2022 um 20:46 Uhr

1446750cookie-checkSo suchen Sie nur im Beitragstitel – wp_query

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy