Interogare după titlu de postare "similar"

11 feb. 2013, 12:21:45
Vizualizări: 96.3K
Voturi: 17

Am folosit un tip de postare personalizat pentru unul dintre site-urile mele. Tipul de postare personalizat conține date despre carduri de zgâriat, împreună cu câteva câmpuri personalizate.

Am dezvoltat o aplicație Android pentru a gestiona acele articole de pe dispozitivul Android.

În aplicația Android, doresc să implementez o funcție de căutare care să ajute administratorii să caute numerele de carduri pentru a le gestiona.

Pot folosi o interogare WordPress pentru a căuta după titlu.

$args = array("post_type" => "mytype", "name" => $title);
$query = get_posts( $args );

Acest cod poate returna rezultate doar dacă furnizez titlul exact. Dar am nevoie să obțin toate articolele cu titlu similar.

Ce sugestii aveți?

1
Comentarii

În loc să folosești get_posts() poți utiliza interogarea implicită de căutare din WordPress care îți va furniza rezultatele pentru termenul căutat. De asemenea, va oferi toate rezultatele care se potrivesc cu toți termenii tăi de căutare.

Rohit Pande Rohit Pande
11 feb. 2013 12:44:56
Toate răspunsurile la întrebare 3
2
33

Puteți utiliza fie parametrul de căutare al wp_query:

$args = array("post_type" => "mytype", "s" => $title);
$query = get_posts( $args );

Sau puteți obține postări bazate pe titlu prin intermediul clasei wpdb:

global $wpdb;
$myposts = $wpdb->get_results( $wpdb->prepare("SELECT * FROM $wpdb->posts WHERE post_title LIKE '%s'", '%'. $wpdb->esc_like( $title ) .'%') );

Apoi veți obține obiectul post în această formă:

foreach ( $myposts as $mypost ) 
{
    $post = get_post( $mypost );
    //executați aici codul de afișare
}
11 feb. 2013 12:52:20
Comentarii

Funcționează aceasta în 2019?

Naren Verma Naren Verma
12 dec. 2019 20:58:49

Rețineți că utilizarea parametrului s în get_posts va căuta nu doar în titlu... ci și în conținut.

FluffyKitten FluffyKitten
11 iul. 2020 18:48:00
3
13

Mult mai simplu în zilele noastre:

$posts = get_posts([
    'post_type'  => 'recipe',
    'title' => 'Chili Sin Carne',
]);

$posts va conține toate rețetele cu titlul exact "Chili Sin Carne".

2 nov. 2020 04:00:14
Comentarii

OP a cerut o potrivire fuzzy

alexg alexg
11 mai 2021 18:27:25

Ups, ai dreptate. Am citit doar titlul :$

Jules Jules
15 mai 2021 13:18:02

mulțumesc. a funcționat

Akshay K Nair Akshay K Nair
27 dec. 2021 13:29:45
0

Poți face ceva de genul acesta:

$posts = get_posts([
            'post_type'   => 'recipe',
            'post_status' => ['publish', 'draft', 'private'],
            's'           => 'șirul de căutare',
            'search_columns' => ['post_title']
        ]);

Această interogare va căuta doar în coloana post_title a articolelor

9 dec. 2023 13:53:39