Wp Query – Как Получить Значение Метабокса В Ключе Мета_Запроса Wp_Query

  • Автор темы Baselkanaan
  • Обновлено
  • 21, Oct 2024
  • #1

Как мне изменить свой WP_Query, чтобы получить значение настраиваемого мета-поля вместо значения настраиваемого поля, как я делаю сейчас?

Вот как выглядит мой запрос:

 
 
 global $wp_query;   $array = get_post_meta(376,'_my_meta_events',TRUE); ?><?php $my_date = $array['date'];
 

Обновление: (что я использую для создания метабокса)

function my_meta_init_events() { $post_id = $_GET['post'] ? $_GET['post'] : $_POST['post_ID'] ; if ($post_id == '376') { foreach (array('post','page') as $type) { add_meta_box('my_all_meta_events', 'Start date', 'my_meta_setup_events', $type, 'normal', 'high'); } } add_action('save_post','my_meta_save_events'); } function my_meta_setup_events() { global $post; $meta = get_post_meta($post->ID,'_my_meta_events',TRUE); include(MY_THEME_FOLDER . '/inc/meta_events.php'); echo '<input type="hidden" name="my_meta_noncename_events" value="' . wp_create_nonce(__FILE__) . '" />'; } function my_meta_save_events($post_id) { if (!wp_verify_nonce($_POST['my_meta_noncename_events'],__FILE__)) return $post_id; if ($_POST['post_type'] == 'page') { if (!current_user_can('edit_page', $post_id)) return $post_id; } $current_data = get_post_meta($post_id, '_my_meta_events', TRUE); $new_data = $_POST['_my_meta_events']; my_meta_clean_events($new_data); if ($current_data) { if (is_null($new_data)) delete_post_meta($post_id,'_my_meta_events'); else update_post_meta($post_id,'_my_meta_events',$new_data); } elseif (!is_null($new_data)) { add_post_meta($post_id,'_my_meta_events',$new_data,TRUE); } return $post_id; } function my_meta_clean_events(&$arr) { if (is_array($arr)) { foreach ($arr as $i => $v) { if (is_array($arr[$i])) { my_meta_clean_events($arr[$i]); if (!count($arr[$i])) { unset($arr[$i]); } } else { if (trim($arr[$i]) == '') { unset($arr[$i]); } } } if (!count($arr)) { $arr = NULL; } } }

У меня есть файл Meta_events.php в нужном месте, я вижу и обновляю метабокс на этой конкретной странице, он сохраняет свое значение, я могу отображать содержимое метабокса на любой странице, это то, что я использую для захвата значение моего метабокса:

<?php $today = date("Y-m-d",mktime(0,0,0,date("m"),date("d"),date("Y"))); $the_query = new WP_Query( array ('showposts' => 10, 'post_type' => 'page', 'meta_query'=> array( array( 'key' => 'start_date', 'compare' => '<=', 'value' => $today, 'type' => 'DATE', )), 'meta_key' => 'start_date', 'orderby' => 'meta_value', 'order' => 'DESC' ) ); while ( $the_query->have_posts() ) : $the_query->the_post(); ?>

Теперь, как я могу изменить свой ключ мета_запроса, чтобы использовать это значение метабокса для фильтрации страниц?

#wp-запрос #мета-запрос #metabox

Baselkanaan


Рег
01 Mar, 2007

Тем
88

Постов
203

Баллов
653
  • 25, Oct 2024
  • #2

Пользовательские мета-поля хранят значения так же, как и пользовательские поля, только у них более красивый пользовательский интерфейс.

Вам не нужно каким-либо образом изменять свой запрос, кроме знания

 
 $args = array(

'post_type' => 'teams',

'meta_query'  => array(

'relation' => 'OR',

array(

'key' => 'teamMember_skype',

'value' => 'your search terms here'

),

array(

'key' => 'teamMember_pinterest',

'value' => 'your search terms here'

)

)

);
$teams = new WP_Query( $args );
 
under which the custom meta box stores it's values. If you're using a plugin to generate the custom meta box, you'll have to dig into its internals to find the meta key. Most custom meta boxes "hide" the keys from showing up in the custom fields UI by starting them with an underscore ( <?php $the_query = new WP_Query( array ( 'showposts' => 10, 'post_type' => 'page', 'meta_query'=> array( array( 'key' => 'start_date', // this key will change! 'compare' => '<=', 'value' => $today, 'type' => 'DATE', ) ), 'meta_key' => 'start_date', 'orderby' => 'meta_value', 'order' => 'DESC' ) ); ).

_ ||answer||

попробуйте это, если хотите выполнить поиск в нескольких метабоксах. это сработало для меня

key
 

Galcd


Рег
01 Mar, 2006

Тем
89

Постов
191

Баллов
656
Тем
403,760
Комментарии
400,028
Опыт
2,418,908

Интересно