Получать сообщения по мета-значению
-
-
Имейте в виду,что [ожидается,что вы изучили проблему и попытались ее решить,прежде чем размещать вопрос.] (Http://wordpress.stackexchange.com/questions/how-to-ask) Если бы вы не были брендомnew здесь,я бы,вероятно,проголосовал против этого вопроса и пошел бы дальше,вместо того чтобы отвечать на него.В духе «Добро пожаловать в стек» это ваша бесплатная пчела.Если у вас возникнут вопросы в будущем,загляните в [спросить].Please be aware that [you are expected to have researched the problem and made an attempt at solving it before posting a question.](http://wordpress.stackexchange.com/questions/how-to-ask) Had you not been brand new here I would have probably down-voted the question and moved on, rather than answer it. In the spirit of "Welcome to the Stack" this is your free-bee. Please take a look at [ask] for future questions.
- 8
- 2014-05-11
- s_ha_dum
-
Это просто заставило меня потерять время из-за непринятого ответа ниже.Так что я оставляю здесь свои 2 цента.Он так и не ответил и не принял ответ ниже.Почему бы вам просто не удалить эти вопросы,пока здесь есть десятки похожих вопросов?This one just made me lose some time because of the not accepted answer below. So I'm leaving here my 2 cents. He never answered, nor accepted the answer below. Why don't you just remove this questions while there are dozens of similar questions around here?
- 0
- 2019-07-21
- mircobabini
-
4 ответ
- голосов
-
- 2014-05-11
То,что вы просите,- это
meta_query
$args = array( 'meta_query' => array( array( 'key' => 'cp_annonceur', 'value' => 'professionnel', 'compare' => '=', ) ) ); $query = new WP_Query($args);
What you are asking for is a
meta_query
$args = array( 'meta_query' => array( array( 'key' => 'cp_annonceur', 'value' => 'professionnel', 'compare' => '=', ) ) ); $query = new WP_Query($args);
-
@ Новичок: если это решило проблему,отметьте его как «Принято».Найдите галочку рядом со стрелками голосования слева.@Beginner : if this solved the problem please mark it "Accepted". Look for the check mark near the vote arrows on the left.
- 3
- 2014-05-11
- s_ha_dum
-
По какой-то причине использование `new WP_Query ($ args)` и последующий вызов `get_posts` у меня не работает.Однако прямая передача массива `$ args` функции`get_posts` в качестве аргумента работает.For some reason using `new WP_Query($args)` and then calling `get_posts` doesn't work for me. Directly passing the `$args` array to the `get_posts` function as an argument works however.
- 0
- 2020-05-05
- Kunal
-
- 2014-05-11
Это можно сделать двумя способами:
-
Перехватить основной запрос на
pre_get_posts
:add_action( 'pre_get_posts', function( $query ) { // only handle the main query if ( ! $query->is_main_query() ) return; $query->set( 'meta_key', 'cp_annonceur' ); $query->set( 'meta_value', 'professionnel' ); } );
-
Добавить дополнительный запрос
$second_loop = get_posts( array( 'meta_key' => 'cp_annonceur', 'meta_value' => 'professionnel', ) );
Более подробный пример можно найти в этом ответе .
There are two ways to do that:
Intercept the main query on
pre_get_posts
:add_action( 'pre_get_posts', function( $query ) { // only handle the main query if ( ! $query->is_main_query() ) return; $query->set( 'meta_key', 'cp_annonceur' ); $query->set( 'meta_value', 'professionnel' ); } );
Add an additional query
$second_loop = get_posts( array( 'meta_key' => 'cp_annonceur', 'meta_value' => 'professionnel', ) );
A more throughout example can be found in this answer.
-
Приятно знать короткий путь сget_posts ()Nice to know the short way with get_posts()
- 2
- 2017-01-26
- Andrew Welch
-
Как это сделать с несколькими мета парами "ключ-значение"?How do you do this with multiple meta ket/values ?
- 0
- 2020-04-09
- G-J
-
@ G-J,возможно,вы захотите взглянуть на [этот пример] (https://wordpress.stackexchange.com/a/105705/385).@G-J you might want to take a look at [this example](https://wordpress.stackexchange.com/a/105705/385).
- 0
- 2020-04-15
- kaiser
-
- 2016-01-28
Я использовал специальный выбор (возможно,лучше)
$posts = $wpdb->get_results("SELECT * FROM $wpdb->postmeta WHERE meta_key = 'cp_annonceur' AND meta_value = 'professionnel' LIMIT 1", ARRAY_A);
На основе https://tommcfarlin.com/get-post-idпо мета-значению/
I used custom select (might be better performance)
$posts = $wpdb->get_results("SELECT * FROM $wpdb->postmeta WHERE meta_key = 'cp_annonceur' AND meta_value = 'professionnel' LIMIT 1", ARRAY_A);
Inspired from https://tommcfarlin.com/get-post-id-by-meta-value/
-
Он может иметь лучшую производительность,но он отбрасывает всю идею наличия функций Wordpress для поиска (и кеширования) данных.А также,что произойдет,если WP решит изменить структуру таблицы?:)It might have better performances, but it throws away the whole idea of having Wordpress functions to search (and cache) data. And, also, what will happen if WP decides to change the table structure? :)
- 3
- 2017-03-03
- Erenor Paz
-
@ErenorPaz Я понимаю,о чем вы говорите,но этот способ упростил бы задачу,если бы у вас было несколько мета ключей/значений в качестве критериев ... Есть ли официальный способ обработки нескольких критериев?@ErenorPaz I understand what you are saying but this way would make it easy if you had multiple meta key/values as a criteria... Is there an official way to handle multiple criteria?
- 0
- 2020-04-09
- G-J
-
Вы имеете в виду что-то вроде `WHEREmetatable1.meta_key='cp_annonceur' ANDmetatable1.meta_value='Professionalnel' Иmetatable2.meta_key='cp_other_meta' ANDmetatable2.meta_value='other_value' '?(Обратите внимание,что я предполагаю,что мы выполняем соединение с той же таблицейposts_meta,используя два имени `metatable1` и`metatable2`).Этого можно добиться,добавив в запрос поле `meta_query` (в виде массива).Взгляните на: https://developer.wordpress.org/reference/classes/wp_query/#order-orderby-parameters и перейдите к абзацу «orderby» с несколькими «meta_key»You mean something like `WHERE metatable1.meta_key = 'cp_annonceur' AND metatable1.meta_value = 'professionnel' AND metatable2.meta_key = 'cp_other_meta' AND metatable2.meta_value = 'other_value'`? (Note that i suppose we do a join on the same posts_meta table using two names `metatable1` and `metatable2`). This can be achieved adding field `meta_query` (as an array) to the query. Take a look at: https://developer.wordpress.org/reference/classes/wp_query/#order-orderby-parameters and go to paragraph "‘orderby’ with multiple ‘meta_key’s"
- 0
- 2020-04-10
- Erenor Paz
-
- 2017-10-04
Мы можем получить желаемый результат с помощью мета-запроса WordPress:
// the meta_key 'diplay_on_homepage' with the meta_value 'true' $cc_args = array( 'posts_per_page' => -1, 'post_type' => 'post', 'meta_key' => 'cp_annonceur', 'meta_value' => 'professionnel' ); $cc_query = new WP_Query( $cc_args );
Более подробное руководство по мета-запросам можно найти в этом блоге: http://www.codecanal.com/get-posts-meta-values/
We can get the desired result with Meta query of the WordPress :
// the meta_key 'diplay_on_homepage' with the meta_value 'true' $cc_args = array( 'posts_per_page' => -1, 'post_type' => 'post', 'meta_key' => 'cp_annonceur', 'meta_value' => 'professionnel' ); $cc_query = new WP_Query( $cc_args );
For more detailed guide regarding meta query follow this blog : http://www.codecanal.com/get-posts-meta-values/
-
Могу ли я узнать,почему это значение `posts_per_page` равно -1?May i know why this `post_per_page` value is -1?
- 0
- 2018-04-27
- Abhay
-
@AbhayGawade Вы можете ограничить максимальное количество результатов с помощью этого параметра,-1 означает отсутствие ограничения.@AbhayGawade You can limit max number of results using that parameter, -1 means no limit.
- 1
- 2018-06-20
- Kush
Я хотел бы перечислить все сообщения,у которых есть ключ
cp_annonceur
со значениемprofessionnel
.