Три человека уже пытались решить эту проблему, и мы приближаемся к нулю. Я хочу показывать только сообщения, которые имеют значение в meta_key 'featured_image'.
Итак ... если 'featured_image' не пусто, покажите сообщение. Вот код:
<ul>
<?php
$args = array(
'showposts' => 5,
'meta_query' => array(
array(
'key' => 'featured_image',
'value' => '',
'compare' => '!='
)
)
);
$ft_pagination = new WP_Query( $args );
?>
<?php while ($ft_pagination->have_posts()) : $ft_pagination->the_post(); ?>
<?php $ftimage = get_post_meta(get_the_id(), 'featured_image', TRUE); ?>
<li>
<article>
<a href="">
<?php if ($ftimage): ?>
<img src="<?php bloginfo('template_directory'); ?>/timthumb.php?src=<?php echo $ftimage; ?>&w=84&h=60" alt="" />
<?php else: ?>
<img src="<?php bloginfo('template_directory'); ?>/timthumb.php?src=/wp-content/themes/ssv/images/review-default.gif&w=84&h=60" alt="" />
<?php endif; ?>
</a>
</article>
</li>
<?php
endwhile;
wp_reset_query();
?>
</ul>
Мы попробовали буквально каждую комбинацию, которую мы можем придумать: устаревшие параметры meta_ *, query_posts, get_posts вместо WP_Query ... Ничего. Напечатан оператор выбора, поле мета-значения не отображается. Он существует - для постов (для каждого поста) и существует в БД.
Мы уже видели каждый пост на эту тему, в том числе:
query_posts и показывать результаты, только если настраиваемое поле не пустое
http://scribu.net/wordpress/advanced-metadata-queries.html
Шиш. Пожалуйста помоги...
Ответы:
Привет @Rob:
Причина, по которой вы не можете понять, как это сделать, заключается в том, что это невозможно, по крайней мере, без обращения к SQL. Попробуйте добавить следующее в
functions.php
файл вашей темы :Если у вас есть настраиваемые
'featured_image'
поля с пустыми значениями, вышеприведенный отфильтрует их. Если ваша проблема в чем-то другом, мы должны увидеть, как ваши данные выглядят для ее решения.Одна вещь, которая мне интересна; как вы получили пустые значения для
'featured_image'
? Пользовательский интерфейс администратора в WordPress 3.1 делает все возможное, чтобы вы не вводили пустые значения. Надеюсь это поможет.источник
featured_image
настраиваемым полем, и ваш запрос работает нормально. Что ты находишь? Есть ли вероятность, что ваш запрос загружает сообщения, которые имеютfeatured_image
настраиваемое поле, но значение этого поля пустое?Похоже, это работает для получения значения в запросе, хотя и не уверен в том, что он получает действительные результаты ..
У меня не было времени для создания полей для проверки результатов, но я смотрел запросы, с которыми работал сегодня и заметил,
NOT IN
что с радостью примет пустой массив.источник
'compare' => 'NOT LIKE'
вместо'NOT IN
«'value' => '', 'compare' => '!='
'value' => array('', array(), serialize(array())), 'compare' => 'NOT IN'
Это старый вопрос, но, похоже, Wordpress исправил эту «недостающую особенность»: теперь, согласно Wordpress, можно проверять наличие (или отсутствие) мета-ключа, например:
Это доступно с WP> = 3.5.
источник
EXISTS
покажет пустые значения, что не то, что мы здесь. Лучшее решение - это то,'value' => '', 'compare' => '!='
что касается моего тестирования.Это запрос, который работал для меня. Очень похоже на сравнение в ответе t31os от 2011 года, но поскольку мета-ключ / значение является простой текстовой строкой, он не должен быть массивом meta_query.
По какой-то причине, использование 'meta_value' => '' и 'meta_compare' => '! =' Или 'meta_compare' => 'NOT LIKE' все же вытащило все сообщения для меня, но, вероятно, это как-то связано с тем, что Я создал мета-значение с помощью плагина Advanced Custom Fields (ACF).
Узнайте больше о параметрах пользовательских полей в кодексе .
источник
Это исправлено в WP 3.2-alpha:
http://core.trac.wordpress.org/ticket/15292
источник
Я что-то пропустил?
Разве это не делает это?
источник
$query = new WP_Query( 'meta_key=featured_image' );
смотрите здесь: codex.wordpress.org/Class_Reference/…один лайнер
источник