ACF ist doch super, ich nehm alles zurück :) Dass die Infos noch in der DB waren hat sich als hilfreich erwiesen, beim Wiederanlegen der Feldgruppen. Schön wäre noch ein Feature bei ACF, dass es erlaubt die Daten endgültig aus der DB zu löschen, falls man es mal braucht. Danke für die Hilfe hier und schönen Gruß!
Beiträge von lf11
-
-
Aaaaahhhhh, durch Einfügen von "'type' => 'NUMERIC'" funktioniert es jetzt richtig. Vielen Dank!!!
-
Hier mal mein gesamter Code für die Suchergebnisseite. Ich verwende aktuell nur die Kategorie "Haus kaufen":
PHP
Alles anzeigen<?php get_header(); /* Start the Loop */ while ( have_posts() ) : ?><div class="container"> <div class="row"> <div class="col-sm-12"> <?php the_post(); the_content();?> </div> </div> <?php endwhile; // End of the loop.?> <div class="row"> <div class="col-sm-12"> <h2>Immobilie Suchergebnisse</h2> <?php if (!empty($_GET)) { $mieten_kaufen = $_GET["mieten_kaufen"]; $wohnung_haus = $_GET["wohnung_haus"]; $ort = $_GET["ort"]; $preis_bis = (int)$_GET["preis_bis"]; $anzahl_raeume = $_GET["anzahl_raeume"]; $wonflaeche = $_GET["wonflaeche"]; if(empty($preis_bis)){$preis_bis = 99999999999999999;} if(empty($anzahl_raeume)){$anzahl_raeume = 0;} if(empty($wonflaeche)){$wonflaeche = 0;} echo $preis_bis; $bpb_args = ""; if($mieten_kaufen == 1 && $wohnung_haus == 1) { //Wohnung mieten $cat = 4; $bpb_args = array( 'numberposts' => -1, 'post_type' => 'immobilie', 'post_status' => 'publish', 'cat' => $cat, 'update_post_meta_cache' => false, 'meta_query' => array( 'relation' => 'AND', array( 'key' => 'ort', 'value' => $ort, 'compare' => '=', ), array( 'key' => 'kaltmiete', 'value' => $preis_bis, 'compare' => '<=', ), array( 'key' => 'zimmer', 'value' => $anzahl_raeume, 'compare' => '>=', ), array( 'key' => 'wohnflache', 'value' => $wonflaeche, 'compare' => '>', ) ) ); } else if($mieten_kaufen == 2 && $wohnung_haus == 1) { //Wohnung kaufen $cat = 6; $bpb_args = array( 'numberposts' => -1, 'post_type' => 'immobilie', 'post_status' => 'publish', 'cat' => $cat, 'update_post_meta_cache' => false, 'meta_query' => array( 'relation' => 'AND', array( 'key' => 'ort', 'value' => $ort, 'compare' => '=', ), array( 'key' => 'kaufpreis', 'value' => $preis_bis, 'compare' => '<=', ), array( 'key' => 'zimmer', 'value' => $anzahl_raeume, 'compare' => '>=', ), array( 'key' => 'wohnflache', 'value' => $wonflaeche, 'compare' => '>', ) ) ); } else if($mieten_kaufen == 1 && $wohnung_haus == 2) { //Haus mieten $cat = 5; $bpb_args = array( 'numberposts' => -1, 'post_type' => 'immobilie', 'post_status' => 'publish', 'cat' => $cat, 'update_post_meta_cache' => false, 'meta_query' => array( 'relation' => 'AND', array( 'key' => 'ort', 'value' => $ort, 'compare' => '=', ), array( 'key' => 'kaltmiete', 'value' => $preis_bis, 'compare' => '<=', ), array( 'key' => 'zimmer', 'value' => $anzahl_raeume, 'compare' => '>=', ), array( 'key' => 'wohnflache', 'value' => $wonflaeche, 'compare' => '>', ) ) ); } else if($mieten_kaufen == 2 && $wohnung_haus == 2) { //Haus kaufen //echo "haus kaufen"; $cat = 3; $bpb_args = array( 'numberposts' => -1, 'post_type' => 'immobilie', 'post_status' => 'publish', 'cat' => $cat, 'update_post_meta_cache' => false, 'meta_query' => array( 'relation' => 'AND', array( 'key' => 'ort', 'value' => $ort, 'compare' => '=', ), array( 'key' => 'kaufpreis_neu', 'value' => $preis_bis, 'compare' => '<', ), array( 'key' => 'zimmer', 'value' => $anzahl_raeume, 'compare' => '>=', ), array( 'key' => 'wohnflache', 'value' => $wonflaeche, 'compare' => '>', ) ) ); } $bpb_query = new WP_Query( $bpb_args ); if( $bpb_query->have_posts() ): while( $bpb_query->have_posts() ) : $bpb_query->the_post(); echo "<a href='".get_permalink( get_the_ID() )."'>".esc_html( get_the_title() )."</a>"; endwhile; endif; } ?> </div> </div> <? get_footer(); -
Danke für die Antwort. Es kommt mir auch so vor, als würde da etwas als String verglichen.
Das testweise neue Feld kaufpreis_neu habe ich aber von Anfang an als Nummerisch in ACF angelegt.Zudem caste ich den Inhalt der Variablen $preis_bis als (int).
Keine Strings also.
-
Bei jedem Wert über 1 werden Immobilien gefunden...
-
Ich habe jetzt mal alle Feldgruppen gelöscht und nur "Ort" und "Kaufpreis" neu erstellt. Interessant ist dabei, dass die Feldinformationen für alle Felder in der _postmeta Tabelle erhalten bleiben. Nach Neuanlegen von "Kaufpreis" und Verknüpfen mit cpt Immobilie waren die Kaufpreise noch erhalten. Was ist da los mit ACF. Bug oder Feature?!
Das Verhalten, dass die Immobilien bei einem Kaufpreis von "9" gefunden werden, hat sich nicht geändert. Diesmal habe ich "Kaufpreis" von vornherein als Nummerisch angelegt.
Auch mit einem ganz neuen Feld "kaufpreis_neu" werden Immobilien weiter bei einem $preis_bis-Wert von 9 gefunden, bei 1 jedoch nicht. Liegt es doch an meiner Meta-Query?! Ich kann da aber keinen Fehler finden.
-
Eigentlich müsste bei Kaufpreis der compare ">=" sein, hatte daran herumexperimentiert - es funktioniert jedoch so oder so nicht richtig!
Oh, es stimmt doch so wie es ist.
-
Eigentlich müsste bei Kaufpreis der compare ">=" sein, hatte daran herumexperimentiert - es funktioniert jedoch so oder so nicht richtig!
-
Hallo,
ich baue für ein Lernprojekt ein Immobilienportal auf, habe einen custom post type "immobilie" und nutze Advanced Custom Fields, um Informationen wie den Kaufpreis der Immobilie abzubilden.
Wenn ich die WP_Query wie unten abgebildet ausführe und nur die Variablen $cat und §ort befülle, liefert die Query korrekte Ergebnisse. Wenn ich jedoch zusätzlich die Variable $preis_bis befülle mit einem Preis der ÜBER dem Kaufpreis der Immobilie liegt, wird zwar ein Ergebnis angezeigt und wenn ich $preis_bis niedriger eingebe, keines. Soweit so richtig. Wenn ich $preis_bis aber mit "9" befülle, wird die Immobilie ausgegeben. Gebe ich "1" ein -> kein Ergebnis. Die Variablen werden per Formular GET Methode an die Seite übermittelt. Ich habe schon versucht den Kaufpreis in php als (int) zu casten, kein Unterschied.
Kann dies daran liegen, dass ich in acf das Kaufpreis-Feld erst als "Text einzeilig" angegeben habe und später (nach Eingeben der Immobilien im Backend) das Feld auf "Nummerisch" umgestellt habe?
Andere mögliche Fehlerquelle: ich habe mehrere Feldgruppen in acf, je nach Kategorie der Immobilie. Diese enthalten das Feld "Kaufpreis" jeweils 1x.
Ausserdem macht mich derzeit in acf stutzig, dass ich ein Feld mit der exakt selben Feldbezeichnung innerhalb einer Feldgruppe mehrfach anlegen kann, das scheint mir inkonsistent zu sein.
Bin für jeden Tipp dankbar!PHP
Alles anzeigen$bpb_args = array( 'numberposts' => -1, 'post_type' => 'immobilie', 'post_status' => 'publish', 'cat' => $cat, 'update_post_meta_cache' => false, 'meta_query' => array( 'relation' => 'AND', array( 'key' => 'ort', 'value' => $ort, 'compare' => '=', ), array( 'key' => 'kaufpreis', 'value' => $preis_bis, 'compare' => '<', ), array( 'key' => 'zimmer', 'value' => $anzahl_raeume, 'compare' => '>=', ), array( 'key' => 'wohnflache', 'value' => $wonflaeche, 'compare' => '>', ) ) ); $bpb_query = new WP_Query( $bpb_args ); if( $bpb_query->have_posts() ): while( $bpb_query->have_posts() ) : $bpb_query->the_post(); echo "<a href='".get_permalink( get_the_ID() )."'>".esc_html( get_the_title() )."</a>"; endwhile; endif; -
Danke, das hat was gebracht. Thread kann geschlossen werden.
Viele Grüße,
lf11 -
Mir ist eine Funktion in dem Kontext wieder eingefallen: post_type_supports()
Damit kann man eine Reihe von Features für einen Post Type checken.https://developer.wordpress.org/reference/func…_type_supports/
Leider lässt sich damit nicht direkt checken, ob ein Post Type editierbar ist.
Eine ähnliche Frage: wie kann ich codeseitig prüfen, ob ein Post im Papierkorb ist? Edit: letzteres gefunden. Mit if(get_post_status($post_id) != 'trash'){} lässt sich prüfen, ob ein Post im Papierkorb ist.
Viele Grüße,
lf11 -
Ich entwickel das Plugin "Last Used Items": https://wordpress.org/plugins/last-used-items/
Dies listet die 10 zuletzt verwendeten Posts, Pages und Custom Post Types auf.
Verwendet man das Plugin Contact Form 7 werden allerdings derzeit auch die Formulare aufgelistet,
die den Custom Post Type "wpcf7_contact_form" verwenden.
Klickt man auf einen solchen Eintrag erscheint leider die Fehlermeldung "Sorry, you are not allowed to edit posts in this post type.".
Der Custom Post Type ist also nicht editierbar. Ich muss vorab codeseitig prüfen, ob der Post Type editierbar ist, damit dieser nicht in der Liste auftaucht.
@SirEctor: weisst Du da Rat? Das wäre super.Viele Grüße und einen schönen Tag,
lf11 -
Ich muss codeseitig prüfen ob ein custom post type editiert werden kann, für eine wordpress plugin entwicklung.
es gibt custom post types, die die option haben nicht editiert werden zu können.gibt es nicht get_post_options um das zu prüfen? mir fällt die richtige funktion nicht mehr ein.
wäre für hilfe dankbar.viele grüße,
lf11 -
Wie checke ich, ob ein custom post type editierbar ist?