Obtenir les identifiants de publication de WP_Query?
-
-
Rick,ta questionest ambiguë.Veuillezindiquertrès clairement ce que vous voulez avant depublier une question.Cela évitera àtout lemonde de répondre à des chosesnonpertinentes.Vous avezen faitbesoin de l'ID depublication renvoyé dans une chaîne,**pas untableau **rick, your question is ambiguous. Please be very clear what you want before posting a question. This will save everyone from answering irrelevant stuff. You actually need the post ID's returned in a string, **not an array**
- 0
- 2014-10-21
- Pieter Goosen
-
Votre `wp_reset_postdata` doit être à l'intérieuret non à l'extérieur de l'instructionif,sinon vouspourriez réinitialiser les données depublication lorsqu'ellesn'ontpas étémodifiéesYour `wp_reset_postdata` should be inside not outside the if statement, otherwise you might reset post data when it hasn't been changed
- 1
- 2014-10-21
- Tom J Nowell
-
Si vousne voulez que lesidentifiants,vous devriez sérieusement considérer la réponse de s_ha_dum.Cela renverra lesidentifiants sans récupérer également denombreuses autres données de labase de données que vousjetezensuite.If you're only wanting the IDs, you should seriously consider s_ha_dum's answer. That will return the IDs without also retrieving lots of other data from the database that you then throw away.
- 1
- 2015-02-27
- Chris Rae
-
4 réponses
- votes
-
- 2014-10-21
-
Celapeut être utile si vous avez égalementbesoin detoutes les donnéespour chaquepublication,pas seulement desidentifiants depublication.Sinon,j'irais avec la solution de @ s-ha-dum.This can be useful if you also need the whole data for each post, not just the posts ids. Otherwise, I'd go with @s-ha-dum's solution.
- 5
- 2017-03-31
- Marian
-
- 2014-10-21
Utilisez l'argument
fields
dans votre requête.champs (chaîne) - Quels champs renvoyer.Tous les champs sont renvoyéspar
défaut.Ilexiste deux autres options: - 'ids' - Renvoie untableau d'ID depublication. - 'id=>parent' - Renvoie untableau associatif [parent=> ID,…].https://developer.wordpress.org/reference/classes/wp_query/# return-fields-parameter
$latest = new WP_Query( array ( 'orderby' => 'rand', 'posts_per_page' => 3, 'fields' => 'ids' )); var_dump($latest->posts);
Use the
fields
argument in your query.fields (string) - Which fields to return. All fields are returned by
default. There are two other options: - 'ids' - Return an array of post IDs. - 'id=>parent' - Return an associative array [ parent => ID, … ].https://developer.wordpress.org/reference/classes/wp_query/#return-fields-parameter
$latest = new WP_Query( array ( 'orderby' => 'rand', 'posts_per_page' => 3, 'fields' => 'ids' )); var_dump($latest->posts);
-
Cela devrait être la réponse acceptée carellene demande que l'ID,ce qui le rendbeaucoupplus rapide que detoutinterrogeret de le ``plumer '' (enboucleet en le réenregistrant) dans unnouveautableau.This should be the accepted answer as it only queries the ID's making it a lot faster than quering everyhing and than 'plucking' (loop and re-storing) it in a new array.
- 16
- 2016-02-05
- Barry Kooij
-
Vous devezpeut-être obtenir des ID APRÈS l'exécution de wp_querynormal,parexemple lorsque vousfusionnez deux requêtespar la suiteet que vous avezbesoin d'IDpourexclure les résultats de la requêteprécédente.Perhaps you need to get IDs AFTER normal wp_query has already been executed, for example when you merge two queries afterwards and need ID's to exclude results from previous query.
- 0
- 2019-08-05
- trainoasis
-
- 2016-12-28
Utiliser la solution de @ s-ha-dumest économique si vous avez seulementbesoin d'obtenir lesidentifiantset que vousn'avezpas dejeu d'objets de requêteprécédent.
Voicipourquoi:
Commutateurswitch ( $q['fields'] ) { case 'ids': $fields = "$wpdb->posts.ID"; break; case 'id=>parent': $fields = "$wpdb->posts.ID, $wpdb->posts.post_parent"; break; default: $fields = "$wpdb->posts.*";
Parce que dans le cas où vous spécifiez uniquement
'fields' => 'ids'
vousn'obtiendrez rien deplusen retour que les ID.Si vouspréférez utiliser
'fields' => 'id=>parent'
(Cela a l'air vraiment drôle),vous obtiendrez également l'IDparent.Toute autremanière d'utiliser l'argument
'fields'
n'aura aucunimpact àpartir de WordPress v4.7.Mais au cas où vous auriez la requête comme dans l'exemple,
wp_list_pluck
fera letravail.Using the solution from @s-ha-dum is economical if you only need to get the id's, and you don't have previous query object set.
Here is why:
switch ( $q['fields'] ) { case 'ids': $fields = "$wpdb->posts.ID"; break; case 'id=>parent': $fields = "$wpdb->posts.ID, $wpdb->posts.post_parent"; break; default: $fields = "$wpdb->posts.*";
Because in the case you only specify
'fields' => 'ids'
nothing more you will get in return than the ID's.If you would go with
'fields' => 'id=>parent'
(Looks really funny) you will get also the parent ID's.Any other way using
'fields'
argument will not have any impact as of WordPress v4.7.But in case you have the query as in the example
wp_list_pluck
will do the job. -
- 2020-09-03
Je suggère cette solution
get_posts([ 'posts_per_page' => -1, 'post_status' => 'publish', 'post_type' => 'some-custom-post-type', 'fields' => 'ids', ]);
et en retour vous avez untableau avec desidentifiants à l'intérieur;)
array (size=5) 0 => int 81002 1 => int 77885 2 => int 77180 3 => int 74722 4 => int 73312
I suggest this solution
get_posts([ 'posts_per_page' => -1, 'post_status' => 'publish', 'post_type' => 'some-custom-post-type', 'fields' => 'ids', ]);
and as return you have array with ids inside ;)
array (size=5) 0 => int 81002 1 => int 77885 2 => int 77180 3 => int 74722 4 => int 73312
Existe-t-il unmoyen de récupérer untableau d'identifiants depublicationinterrogésparmi les éléments suivants:
Suivi:
J'ai utilisé
wp_list_pluck
pour récupérer untableau d'identifiants depublication:Puis converti letableauen une chaîneen utilisant lafonctionimplode:
Désolépour la question ambiguë.