Benutzerdefinierte Abfrage mit orderby meta_value des benutzerdefinierten Felds
8 Antworten
- Stimmen
-
- 2011-04-24
Sie können den Metaschlüsselfür den Parameter orderby mit der alten Methode definieren (dieichin WP 3.1.1getestet habe) ...
query_posts( array( 'post_type' => 'services', 'order' => 'ASC', 'meta_key' => 'some_key', 'orderby' => 'meta_value', //or 'meta_value_num' 'meta_query' => array( array('key' => 'order_in_archive', 'value' => 'some_value' ) ) ) );
You can define the meta key for orderby parameter using the old method (I tested on WP 3.1.1)...
query_posts( array( 'post_type' => 'services', 'order' => 'ASC', 'meta_key' => 'some_key', 'orderby' => 'meta_value', //or 'meta_value_num' 'meta_query' => array( array('key' => 'order_in_archive', 'value' => 'some_value' ) ) ) );
-
- 2016-11-15
Dieses Problem wirdim Allgemeinenin WordPress 4.2 mithilfebenannter Abfragenbehoben.z.B.
$args = array( 'post_type' => 'services', 'orderby' => 'order_clause', 'meta_query' => array( 'order_clause' => array( 'key' => 'order_in_archive', 'value' => 'some_value', 'type' => 'NUMERIC' // unless the field is not a number )));
Fürmich wollteichnacheinem numerischen Feldbestellen undmusste
'type' => 'NUMERIC'
in der Meta-Abfrage.This issue in general is cleared up in WordPress 4.2 by using named queries. e.g.
$args = array( 'post_type' => 'services', 'orderby' => 'order_clause', 'meta_query' => array( 'order_clause' => array( 'key' => 'order_in_archive', 'value' => 'some_value', 'type' => 'NUMERIC' // unless the field is not a number )));
For me, I wanted to order by a numeric field and I had to use
'type' => 'NUMERIC'
inside the meta query.-
Super Fund auf dengenannten Abfragen!Awesome find on the named queries!
- 1
- 2017-07-30
- Kaji
-
Ja,benannte Fragenbeantworteten die Frage auchfürmich.Yep, named queries answered the question for me, too.
- 0
- 2017-07-31
- Dalton Rooney
-
Ausgezeichnet.Ichbin mirnicht sicher,welche Bedeutung 'value'in dieser order_clause hat,da diesnichterforderlichist,daesnach dem höchstenbisniedrigsten Wert von 'order_in_archive'geordnet wird.Excellent. I'm not sure the significance of 'value' in that order_clause because it's not required as it will order it by the highest to lowest value of 'order_in_archive'.
- 1
- 2018-12-07
- Andrew Schultz
-
- 2011-04-24
Der WP-Codexisttatsächlich verwirrend,wenn dieses Problembehoben wird.
Siebenötigen den Parametermeta_querynicht,um den orderby zu verwenden,sondern den Parametermeta_key,der,obwohler von WP Codex veraltetist,hiereingerichtet wurde: Wie verwenden Sie orderbymit meta_queryin Wordpress 3.1? ,die orderybynochbenötigtmeta_key.
so solltees sein
query_posts( array( 'post_type' => 'services', 'order' => 'ASC', 'orderby' => 'meta_value', 'meta_key' => 'order_in_archive' ) )
The WP Codex is actually confusing when addressing this problem.
You do not actually need the meta_query param to use the orderby, instead it uses the meta_key param, which although by WP Codex is deprecated is has been established here: How do you use orderby with meta_query in Wordpress 3.1? that orderyby still needs the meta_key.
so it should be
query_posts( array( 'post_type' => 'services', 'order' => 'ASC', 'orderby' => 'meta_value', 'meta_key' => 'order_in_archive' ) )
-
Nunja,diesist die alte Methode,um diese Abfrage durchzuführen,und sie scheintfür diese angegebene zufunktionieren.Bei komplexeren Abfragenfunktioniert diesjedochnicht.Ichfand,dass diesein bekanntes Problemist,dasbehoben wird. Detailsfinden Siein den Trac-Tickets [# 15031] (http://core.trac.wordpress.org/ticket/15031) und [# 17065] (http://core.trac.wordpress.org/ticket/17065)Well, yes, this is the old method for doing this query and it appears to be working for this specified one. Anyway, for more complex queries, it won't work. I found this is a known issue that is being taken care of, details can be found in trac tickets [#15031](http://core.trac.wordpress.org/ticket/15031) and [#17065](http://core.trac.wordpress.org/ticket/17065)
- 3
- 2011-04-24
- Maor Barazany
-
- 2017-07-06
Esisteinfach:
Hieristmein Code:
query_posts(array( 'post_type' => 'directors', 'posts_per_page' => -1, 'order' => 'ASC', 'orderby' => 'director_weight', 'meta_key' => 'director_weight' ) );
Das Hauptdetailist:include
meta_key
,mein Code wurdenurbestellt,wennmeta_key
enthaltenist,und dasist alles:Hierist der vollständige Codeeiner Liste von
directors
Bildern,dienachdirector_weight
sortiert sind:<?php query_posts(array( 'post_type' => 'directors', 'posts_per_page' => -1, 'order' => 'ASC', 'orderby' => 'director_weight', 'meta_key' => 'director_weight' ) ); while (have_posts()) : the_post(); ?> <li <?php echo get_field('director_weight') ?>> <img src="<?php echo get_field('director_imagen') ?>"> </li> <?php endwhile; wp_reset_query(); ?>
It´s easy:
Here is my code:
query_posts(array( 'post_type' => 'directors', 'posts_per_page' => -1, 'order' => 'ASC', 'orderby' => 'director_weight', 'meta_key' => 'director_weight' ) );
The main detail is: include
meta_key
, my code didn´t order unlessmeta_key
is included, and that's all:Here is the full code of a list of
directors
pictures order bydirector_weight
:<?php query_posts(array( 'post_type' => 'directors', 'posts_per_page' => -1, 'order' => 'ASC', 'orderby' => 'director_weight', 'meta_key' => 'director_weight' ) ); while (have_posts()) : the_post(); ?> <li <?php echo get_field('director_weight') ?>> <img src="<?php echo get_field('director_imagen') ?>"> </li> <?php endwhile; wp_reset_query(); ?>
-
- 2015-08-07
Verwenden Sienicht query_posts.
$meta_query = new WP_Meta_Query( $meta_query_args ); $meta_query_args = array( 'post_type' => 'services', 'order' => 'ASC', 'meta_key' => 'your_key', 'orderby' => 'meta_value', //or 'meta_value_num' 'meta_query' => array( array('key' => 'order_in_archive', 'value' => 'some_value' )));
Verwenden Sie die WP_Meta_Query-Parameter
Don't use query_posts.
$meta_query = new WP_Meta_Query( $meta_query_args ); $meta_query_args = array( 'post_type' => 'services', 'order' => 'ASC', 'meta_key' => 'your_key', 'orderby' => 'meta_value', //or 'meta_value_num' 'meta_query' => array( array('key' => 'order_in_archive', 'value' => 'some_value' )));
Use the WP_Meta_Query parameters
-
- 2012-12-28
Ichfand dasganzgut.
<?php query_posts( array( 'posts_per_page' => '-1', 'post_type' => 'services', 'order' => 'DESC', 'meta_key' => '_order', 'orderby' => 'meta_value_num', //or 'meta_value_num' ) );
I found this to work quite well.
<?php query_posts( array( 'posts_per_page' => '-1', 'post_type' => 'services', 'order' => 'DESC', 'meta_key' => '_order', 'orderby' => 'meta_value_num', //or 'meta_value_num' ) );
-
Die Fragebezieht sich auf denneuen Parameter "meta_query" und darauf,dassein "orderby" damitfunktioniert,undnicht auf die älteren,aberimmernochfunktionalen Parameter "meta_key"/"meta_value".Lassen Sie uns auchnicht die Verwendung von "query_posts"fördern.The question is about the new-ish `meta_query` parameter and getting an `orderby` to work with it, and not about the older but still functional `meta_key`/`meta_value` parameters. Also, let's not encourage the use of `query_posts`.
- 3
- 2012-12-28
- s_ha_dum
-
Diese Antwortenthältmehrere schlechte Praktiken: Verwenden von -1,Übergeben als Zeichenfolge,Verwenden von query_posts.Es sollteentfernt werden.This answer contains multiple bad practices: using -1, passing it as a string, using query_posts. It should be removed.
- 0
- 2019-03-01
- Ihor Vorotnov
-
- 2017-01-19
Ich hatteeine Reihe vonbenutzerdefinierten Ereignisdaten,dieichnach absteigendem Datum sortierenmusste.Damein benutzerdefiniertes Ereignisdatumin meiner Tabelle wp_postmetagespeichert war und sichnormalerweise vom Datumpost_date oder dengeänderten Daten unterschied,funktionierte diesfürmich:
$args = array( 'post_type' => 'events', // my post type - yours can be 'posts' 'post_status' => 'publish', // only get posts with this status 'orderby' => 'meta_value', // orderby the meta_value of the following meta_key 'meta_key' => 'my_custom_eventdate', // the custom meta_key name 'order'=> 'DESC' // sort descending ); $posts = new WP_Query($args);
Sie können dann $posts wiefolgt durchlaufen:
foreach($posts->posts as $p){ $post_id = $p->ID; // and so on ... // # example of how I retrieve my event date $event = get_post_meta($post_id, 'my_custom_eventdate', true); }
I had a set of custom event dates I needed to sort by date descending. Since my custom event date was stored in my wp_postmeta table, and was typically different to the post_date or modified dates, this worked for me:
$args = array( 'post_type' => 'events', // my post type - yours can be 'posts' 'post_status' => 'publish', // only get posts with this status 'orderby' => 'meta_value', // orderby the meta_value of the following meta_key 'meta_key' => 'my_custom_eventdate', // the custom meta_key name 'order'=> 'DESC' // sort descending ); $posts = new WP_Query($args);
You can then loop through $posts like so:
foreach($posts->posts as $p){ $post_id = $p->ID; // and so on ... // # example of how I retrieve my event date $event = get_post_meta($post_id, 'my_custom_eventdate', true); }
-
- 2019-03-17
Diese Arbeitfürmich,
$args = array( 'post_type' => 'services', 'order' => 'ASC', 'orderby' => 'order_clause', 'meta_query' => array( 'order_clause' => array( 'key' => 'order_in_archive' )));
Wirdnurbenötigt,um den Schlüsselfür die order_clause
bereitzustellenThis work for me,
$args = array( 'post_type' => 'services', 'order' => 'ASC', 'orderby' => 'order_clause', 'meta_query' => array( 'order_clause' => array( 'key' => 'order_in_archive' )));
Only needed to provide the key for the order_clause
Aa Sie wissen,ab WP3.0gibt es Optionenfürbenutzerdefinierteerweiterte Abfragen,wasgroßartigist. Aus diesem Grund wurdeneinige Abfrageparameter vonbenutzerdefinierten Feldern wiemeta_key,meta_valuefür denneuen Parametermeta_query ( siehe hier )nichtmehr unterstützt )
Ich versuche,eine ziemlicheinfache Abfragemit derneuen Syntax zu haben,Beiträgenacheinem bestimmtenpost_type (Dienste) abzufragen,dereinen angegebenenmeta_key (order_in_archive)enthält - dies läuft wieerwartet. Aber -ichmöchte die Abfragenach demmeta_value sortieren,ohne Erfolg.
Diesistmeine Anfrage -
Ich habe versucht,orderby auchnachmeta_value_numeric undmeta_value zubestellen,aberin jedem Fall werden die Ergebnissenach dem Veröffentlichungsdatum sortiert (wiebei regulären Posts). Weißjemand,wie dasgemacht werden kann?
Danke