it-swarm.com.de

Alles durchsuchen (Posts, Seiten, Tags, Cpt, Meta)

Ich möchte wissen, wie ich die integrierte WordPress-Suche verwenden kann, um Ergebnisse aus allen Inhalten auf meiner Website zurückzugeben. Insbesondere möchte ich suchen;

  • beiträge
  • seiten
  • stichworte
  • benutzerdefinierter Beitragstyp (Portfolio)
  • benutzerdefinierte Taxonomie für benutzerdefinierten Beitragstyp (Skill, Client)
  • in benutzerdefinierten Beitragstypen verwendete Metaboxen (portfolio_caption, portfolio_excerpt, portfolio_credits, portfolio_links)

Ich möchte ein Suchformular und muss die Suche nicht auf bestimmte Beitragstypen oder Kategorien beschränken. Geben Sie einfach den Suchbegriff ein und klicken Sie auf "Suchen", um Übereinstimmungen mit allen Inhalten auf meiner Website anzuzeigen. Einfach;)

Update: Vorzugsweise würde ich dies durch eine Funktion oder eine benutzerdefinierte Datenbankabfrage erreichen, anstatt ein Plugin zu verwenden. Dies liegt daran, dass ich ein Thema entwickle und diese Funktionalität sofort einbinden möchte, anstatt dass ein Benutzer ein Plugin herunterladen muss. (Titel geändert)

3
robflate

DeluxeBlogTips.com 1) In diesem Artikel erfahren Sie, wie kombinierte Suchen in Posts und Metadaten durchgeführt werden. Grundsätzlich handelt es sich um zwei Abfragen über das Objekt $ wpdb; Eine, die die Metatabelle durchsucht, um eine Liste von post_ids zu erhalten, und die andere, um post_ids zu erhalten. Anschließend fügen Sie die Arrays zusammen und führen mit dem Argument WP_Query eine Abfrage mit einem posts__in durch.

Die Verwendung von Tags kann etwas schwierig sein, da 1. Tags Beiträge gruppieren sollen und 2. Tags und Taxonomien 3 verschiedene Tabellen umfassen.

1) Der verlinkte Artikel ist nicht ganz richtig. Es sollte $keyword = "%".like_escape( $keyword )."%"; sein.

2
Manny Fleurmond

Über den Link @Wyck posted checken Sie http://wordpress.org/extend/plugins/search-everything/ aus. Angesichts der Komplexität der Aufgabe ist ein Plugin die beste Lösung.

0
Matthew Boynes

Wenn Sie wirklich gegen ein Plugin sind und SQL kennen, können Sie dies mit der globalen Variablen $ wpdb tun.

Wenn Sie beispielsweise alle Posts abfragen möchten, deren Titel "sample_text" enthält, gehen Sie folgendermaßen vor:

global $wpdb;    
$post = $wpdb->get_results("SELECT * FROM $wpdb->wp_posts WHERE post_title LIKE '%sample_text%' ");

Dann würden Sie ähnliche Dinge für jede der anderen Tabellen tun.

0
karllhughes