[COLOR=#333333]danielgoehr ich weiß zwar nicht warum es jetzt geht, aber du bist definitiv mein Held des Tages!
Vielen DANK! [/COLOR]:-o
Um schreiben oder kommentieren zu können, benötigen Sie ein Benutzerkonto.
Sie haben schon ein Benutzerkonto? Melden Sie sich hier an.
Jetzt anmeldenHier können Sie ein neues Benutzerkonto erstellen.
Neues Benutzerkonto erstellen[COLOR=#333333]danielgoehr ich weiß zwar nicht warum es jetzt geht, aber du bist definitiv mein Held des Tages!
Vielen DANK! [/COLOR]:-o
Moin b3317133,
der Synthaxfehler war nur ein Versehen beim Umbenennen der Variablen für den Code hier im Forum (Näheres dazu habe ich in der letzen Antwort an danielgoehr beschrieben).
Hier nochmal der gesamte Code:
global $wp_query;
wp_reset_query();
$temp = $wp_query;
define('PER_PAGE_DEFAULT', 60);
$paged = get_query_var('paged') ? get_query_var('paged') : 1;
$type = 'bilder';
$args = array(
'post_type' => $type,
'post_status' => 'publish',
'posts_per_page' => PER_PAGE_DEFAULT,
'caller_get_posts' => 1,
'paged' => $paged,
'meta_query' => array(
'relation' => 'OR',
array(
'relation' => 'AND',
array(
'key' => 'aktiv',
'value' => '"ja"',
'compare' => 'NOT LIKE'
),
array(
'key' => 'typ',
'value' => '127',
'compare' => 'LIKE'
),
array(
'key' => 'farbe1',
'value' => '$suchstring',
'compare' => 'LIKE'
),
),
array(
'relation' => 'AND',
array(
'key' => 'aktiv',
'value' => '"ja"',
'compare' => 'NOT LIKE'
),
array(
'key' => 'typ',
'value' => '127',
'compare' => 'LIKE'
),
array(
'key' => 'farbe2',
'value' => '$suchstring',
'compare' => 'LIKE'
),
),
array(
'relation' => 'AND',
array(
'key' => 'aktiv',
'value' => '"ja"',
'compare' => 'NOT LIKE'
),
array(
'key' => 'typ',
'value' => '127',
'compare' => 'LIKE'
),
array(
'key' => 'farbe3',
'value' => '$suchstring',
'compare' => 'LIKE'
),
),
array(
'relation' => 'AND',
array(
'key' => 'aktiv',
'value' => '"ja"',
'compare' => 'NOT LIKE'
),
array(
'key' => 'typ',
'value' => '127',
'compare' => 'LIKE'
),
array(
'key' => 'farbe4',
'value' => '$suchstring',
'compare' => 'LIKE'
),
),
array(
'relation' => 'AND',
array(
'key' => 'aktiv',
'value' => '"ja"',
'compare' => 'NOT LIKE'
),
array(
'key' => 'typ',
'value' => '127',
'compare' => 'LIKE'
),
array(
'key' => 'farbe5',
'value' => '$suchstring',
'compare' => 'LIKE'
),
),
array(
'relation' => 'AND',
array(
'key' => 'aktiv',
'value' => '"ja"',
'compare' => 'NOT LIKE'
),
array(
'key' => 'typ',
'value' => '127',
'compare' => 'LIKE'
),
array(
'key' => 'farbe6',
'value' => '$suchstring',
'compare' => 'LIKE'
),
),
array(
'relation' => 'AND',
array(
'key' => 'aktiv',
'value' => '"ja"',
'compare' => 'NOT LIKE'
),
array(
'key' => 'typ',
'value' => '127',
'compare' => 'LIKE'
),
array(
'key' => 'farbe7',
'value' => '$suchstring',
'compare' => 'LIKE'
),
)
)
);
$wp_query = new WP_Query($args);
while ($wp_query->have_posts()) : $wp_query->the_post();
...
endwhile;
Alles anzeigen
Moin danielgoehr,
danke für deinen Tipp und deinen Hinweis.
Der Code den ich gepostet habe, ist etwas abgewandelt, da meine custom fields und
value-variablen längere Namen haben und ich hier aber übersichtlicher schreiben wollte.
Warum das Anführungszeichen anders ist, kann ich mir nicht erklären ist wahrscheinlich beim Umändern der Variablen-Namen passiert und dann habe ich das durch copy&paste wiederholt falsch eingefügt.
Deinen Tipp mit der Zusammenfassung übernehme ich sehr gern! Vielleicht war das ja auch schon das Problem, sodass der Server gecrasht ist, da er zu oft die gleichen Dinge abgefragt hat? Ich weiß es aber nicht.
Zu deiner Frage "[COLOR=#333333]Wie äussert sich denn dieser Crash? Was ist denn das für ein Server und bei welchem Anbieter?"
Sobald ich die Webseite aufrufe geht nichts mehr. Sie lädt und lädt und lädt nach mehreren Minuten immer noch. Dann irgendwann kommt ab und zu ein "Seite kann nicht angezeigt werden".
Ab und zu steht unten links im Chrome "warte auf Socket".
Die einzige Lösung ist dann bei All-Inkl (dem Hoster) anzurufen und die zu bitten den Server neu zu starten. Wobei die dort immer von einem Dienstneustart sprechen. Da es einen Unendlich-Loop in der Datenbankabfrage gibt. So meinte es zumindest der Support.
Mittlerweile ist es schon echt nervig, da nach jeder Änderung die NICHT funktioniert ein erneutes Telefonat stattfinden muss und so ist try & error natürlich nicht wirklich möglich bzw. das große Rätseln angesagt.
[/COLOR]
Ok gern
'meta_query' => array(
'relation' => 'OR',
array(
'relation' => 'AND',
array(
'key' => 'aktiv',
'value' => '"ja"',
'compare' => 'NOT LIKE'
),
array(
'key' => 'typ',
'value' => '127',
'compare' => 'LIKE'
),
array(
'key' => 'farbe1',
'value' => '$suchstring',
'compare' => 'LIKE'
),
),
array(
'relation' => 'AND',
array(
'key' => 'aktiv',
'value' => '"ja"',
'compare' => 'NOT LIKE'
),
array(
'key' => 'typ',
'value' => '127',
'compare' => 'LIKE'
),
array(
'key' => 'farbe2‘,
'value' => '$suchstring',
'compare' => 'LIKE'
),
),
array(
'relation' => 'AND',
array(
'key' => 'aktiv',
'value' => '"ja"',
'compare' => 'NOT LIKE'
),
array(
'key' => 'typ',
'value' => '127',
'compare' => 'LIKE'
),
array(
'key' => 'farbe3‘,
'value' => '$suchstring',
'compare' => 'LIKE'
),
),
array(
'relation' => 'AND',
array(
'key' => 'aktiv',
'value' => '"ja"',
'compare' => 'NOT LIKE'
),
array(
'key' => 'typ',
'value' => '127',
'compare' => 'LIKE'
),
array(
'key' => 'farbe4‘,
'value' => '$suchstring',
'compare' => 'LIKE'
),
),
array(
'relation' => 'AND',
array(
'key' => 'aktiv',
'value' => '"ja"',
'compare' => 'NOT LIKE'
),
array(
'key' => 'typ',
'value' => '127',
'compare' => 'LIKE'
),
array(
'key' => 'farbe5‘,
'value' => '$suchstring',
'compare' => 'LIKE'
),
),
array(
'relation' => 'AND',
array(
'key' => 'aktiv',
'value' => '"ja"',
'compare' => 'NOT LIKE'
),
array(
'key' => 'typ',
'value' => '127',
'compare' => 'LIKE'
),
array(
'key' => 'farbe6‘,
'value' => '$suchstring',
'compare' => 'LIKE'
),
),
array(
'relation' => 'AND',
array(
'key' => 'aktiv',
'value' => '"ja"',
'compare' => 'NOT LIKE'
),
array(
'key' => 'typ',
'value' => '127',
'compare' => 'LIKE'
),
array(
'key' => 'farbe7‘,
'value' => '$suchstring',
'compare' => 'LIKE'
),
)
)
Alles anzeigen
So führt der Code zum Crash.
Siehst du etwas Falsches im Code?
Schau Dir mal in der WordPress meta_query Dokumentation die Beispiele an, dort sieht man schön, wie man 'OR' benutzt und ebenso wie eine 'verschachtelte' Abfrage funktioniert.
Hallo b3317133,
vielen Dank für deine Antwort! Die Dokumentation habe ich schon seit Tagen immer wieder offen, aber die gezeigten Beispiele sind leider nicht die Lösung zu meinem benötigtem Aufbau :(
Laut Doku:
'relation' => 'OR',
array(
'key' => '_my_custom_key',
'value' => 'Value I am looking for',
'compare' => '='
),
array(
'relation' => 'AND',
array(
'key' => '_my_custom_key_2',
'value' => 'Value I am looking for 2',
'compare' => '='
),
array(
'key' => '_my_custom_key_3',
'value' => 'Value I am looking for 3',
'compare' => '=' ) )
Alles anzeigen
ich brauche aber OR 7 mal und da crasht dann der Server.
Hast du eine Idee?
Der Ansatz wäre so (das letzte Array ersetzen durch das folgende):
Hallo spickzettel,
vielen Dank für deine Antwort! Diesen Ansatz hatte ich auch schon verfolgt, leider kommt es an am Ende immer zu einer Dauerschleife und der Server crasht worauf ich immer beim Support anrufen muss, damit die Damen und Herren den Server neu starten.
Das Problem liegt dann wohl an den weiteren Abhängigkeiten denn es müsse ja ebenfalls noch
array( 'key' => 'aktiv', // (a) 'value' => '"ja"', // 'compare' => 'NOT LIKE' ), array( 'key' => 'typ', // (b) 'value' => '127', // ID des CPT "Typen" -> großes Bild 'compare' => 'LIKE' ),
angefügt werden und dann wäre, so wie ich das verstehe die Abfrage
Wenn
Farbe1
oder Farbe2 etc.
oder aktiv == ja
oder typ LIKE "127"
aber es muss so laufen:
wenn
Farbe1 und aktiv == ja und typ LIKE "127"
oder
Farbe2 und aktiv == ja und typ LIKE "127"
oder
Farbe3 und aktiv == ja und typ LIKE "127"
oder
Farbe4 und aktiv == ja und typ LIKE "127"
oder
Farbe5 und aktiv == ja und typ LIKE "127"
etc....
Und hier liegt das Problem diese geschachtelten OR Abfragen bringen den Server immer zum crashen :(
Hast du eine Idee?
Da diese Forumsoftware hier echt Probleme mit Darstellungen hat hier nochmal der Code:
'meta_query' => array(
array(
'key' => 'aktiv', // (a)
'value' => '"ja"', //
'compare' => 'NOT LIKE'
),
array(
'key' => 'typ', // (b)
'value' => '127', // ID des CPT "Typen" -> großes Bild
'compare' => 'LIKE'
),
array(
'key' => 'farbe1', // (c)
'value' => '$suchstring', // z.B. ff0000
'compare' => 'LIKE'
),
)
Alles anzeigen
Moin zusammen,
ich brauche mal bitte eure Hilfe. Nach längerem suchen im Netz bin ich immer noch nicht auf eine Lösung gestoßen. Vielleicht suche ich falsch? Wer weiß ^^
Es geht um folgendes Problem:
Ich habe einen Custom-Post-Type "Bilder"
Jeder Post hat
a) eine Checkbox die für die Freigabe bzw. Archivierung da ist > also Checkbox aktiviert = "ja" Post gesperrt, deaktiviert = "" Post darf verwendet werden
b) ein Typ auswahlfeld also z.B. großes Bild, kleines Bild, Testbild
c) 7 Advanced-Custom-Fields (Textfelder) Farbe1 - Farbe7 die einen Farbcode beinhalten z.B. ff0000
Per WP-Query möchte ich nun alle Posts von "Bilder" ausgeben, die
1. Freigegeben sind (a)
2. vom Typ ein großes Bild sind (b)
3. den gesuchten String z.B. ff0000 im Custom-Field "Farbe1" haben OR
den gesuchten String z.B. ff0000 im Custom-Field "Farbe2" haben OR
den gesuchten String z.B. ff0000 im Custom-Field "Farbe3" haben OR
den gesuchten String z.B. ff0000 im Custom-Field "Farbe4" haben OR
etc bis Farbe 7 (c)
Mein Aktueller Code sieht aktuell so aus:
'meta_query' => array( array( 'key' => 'aktiv', // (a) 'value' => '"ja"', // 'compare' => 'NOT LIKE' )
array( 'key' => 'typ', // (b) 'value' => '127', // ID des CPT "Typen" -> großes Bild 'compare' => 'LIKE' ),
array( 'key' => 'farbe1', // (c) 'value' => '$suchstring', // z.B. ff0000 'compare' => 'LIKE' ),)
Jetzt werden mir alle Posts ausgegeben die (a), (b) und Farbe1 kompatibel sind, aber was ich nun nicht weiß, wie frage ich auch alle anderen Farbfelder ab?
Ich hoffe ihr habt einen Denkanstoß für mich !
Vielen Dank und viele Grüße
David
Moin zusammen,
ich stehe kurz vorm Nervenzusammenbruch und brauche einmal euren Rat.
Es geht um Folgendes:
Ich habe einen WP_Query Aufruf:
$search = $_SESSION["search"]; // z.B. Kühe
$meta_query = array( array( 'key' => 'customposttypes-namen', 'value' => $search, 'compare' => 'LIKE' )
);
$type = 'customposttypes';
$args = array( 'post_type' => $type, 'post_status' => 'publish', 'posts_per_page' => -1, 'caller_get_posts' => 1, 'paged' => $paged, 'meta_query' => $meta_query );
$wp_query = new WP_Query($args);
Jetzt soll das System eigentlich alle Posts ausgeben Tabelle "postmeta" | "meta_key" > "customposttypes-namen" | value > "Kühe" also als Wildcardsuche (LIKE)
Als Result erhalte ich genau nix. Jetzt das mysteriöse an der Sache:
Schreibe ich statt "$search" > direkt "Kühe" findet er alles.
Ich habe die Variable mehrfach ausgegeben und überprüft alles stimmt. Ich habe sogar den Typ mit is_string überprüft.
Alles korrekt und vollständig. Aber Result gibt es nur bei manueller Eintragung des Suchbegriffs im Quelltext.
Dieser Fehler bezieht sich ausschließlich auf "Umlaute / Sonderzeichen" alles andere wird richtig gefunden.
Hat jemand eine Idee? Ich bin echt Ratlos!
Vielen Dank für eure Hilfe!
LG David
Ein herzliches Hallo zusammen,
ich sitze vor einem Problem und komme nicht weiter. Natürlich hoffe ich das ihr mir helfen könnt (:
Es geht um Folgendes:
Ich möchte ein Konfigurator erstellen. Es gibt 4 Konfigurator-Steps.
Die einzelnen Steps sind im Backend über Custom Post Types hinterlegt.
1. Marke
2. Gerät
3. Cat
4. Leistung
Nun habe ich eine Page, die ein Page-Template nutzt (template-konfigurator.php).
Alles ist soweit eingerichtet und nun geht es um den Aufruf.
Ich möchte das wenn man die URL meineseite.de/Marke/Geraet/Cat/Leistung/
aufruft, auf die Page Konfigurator weitergeleitet wird.
Auf der Seite werden dann die SLUGS ausgelesen und der richtige Content angezeigt.
Natürlich muss das auch dann funktionieren wenn NUR einer der SLUGS eingefügt ist. Beispiel: meineseite.de/Marke/
Mein bisheriger Versuch sieht so aus:
function custom_rewrite_konfigurator() {
global $wp; $wp->add_query_var( 'marke' ); $wp->add_query_var( 'geraet' ); $wp->add_query_var( 'cat' ); $wp->add_query_var( 'leistung' );
add_rewrite_rule('^reparatur/([a-zA-Z0-9-]+)/([a-zA-Z0-9-]+)/([a-zA-Z0-9-]+)/([a-zA-Z0-9-]+)', 'index.php?page_id=7&marke=$matches[1]&geraet=$matches[2]&cat=$matches[3]&leistung=$matches[4]', 'top');}add_action('init', 'custom_rewrite_konfigurator');
Das Klappt auch bisher, aber leider nur wenn alle 4 SLUGS angegeben sind. Wie kann schaff ich es, das auch nur ein Slug reicht und dennoch der REWRITE klappt?
Schon mal ein dickes Danke für eure Hilfe!
Gruß David