- 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