Как я могу показать сообщения только в том случае, если meta_value не пуст
Вопрос
Три человека уже пытались решить это, и мы приближаемся к ноль. Я хочу показать только посты, которые имеют значение в Meta_key 'infure_image'.
Так что ... если 'effeed_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>
Мы пробовали буквально каждую комбинацию, о которой мы можем подумать, о том, что устаревшая мета -параметры, Query_posts, get_posts, вместо wp_query ... ничего. Отпечатано оператор SELECT, поле мета -значения не показывает. Он существует - для постов (для каждого поста) и существует в БД.
Мы видели каждый пост на этой теме прямо сейчас, включая эти:
Query_posts и покажите результаты только в том случае, если пользовательское поле не пусто
http://scribu.net/wordpress/advanced-metadata-queries.html
Зилч. Пожалуйста помоги...
Решение
Привет @ROB:
Причина, по которой вы не можете понять, как это сделать, заключается в том, что это невозможно, по крайней мере, не без привыкания к SQL. Попробуйте добавить следующее в вашу тему functions.php
файл:
add_filter('posts_where','yoursite_posts_where',10,2);
function yoursite_posts_where($where,$query) {
global $wpdb;
$new_where = " TRIM(IFNULL({$wpdb->postmeta}.meta_value,''))<>'' ";
if (empty($where))
$where = $new_where;
else
$where = "{$where} AND {$new_where}";
return $where;
}
Если у вас есть пользовательский 'featured_image'
Поля с пустыми значениями Вышеуказанные отфильтровывают их. Если вы проблема - это что -то еще, нам нужно будет посмотреть, как выглядят ваши данные, чтобы решить их.
Одна вещь, которая мне любопытно; Как вы получили пустые значения для 'featured_image'
? Пользовательский интерфейс Admin в WordPress 3.1 делает все возможное, чтобы вы не входили в пустые значения. Надеюсь это поможет.
Другие советы
Похоже, что это работает для получения значения в запрос, не уверен, приносит ли он действительные результаты, хотя.
'meta_query' => array(
array(
'key' => 'some_key',
'value' => array(''),
'compare' => 'NOT IN'
)
)
У меня не было времени создавать поля, чтобы проверить результаты, но я смотрел вопросы, с которыми я работал сегодня и заметил NOT IN
С радостью возьмет пустой массив.
Это старый вопрос, но, похоже, WordPress исправил эту «отсутствующую функцию»: теперь, согласно WordPress Codex возможно проверить наличие (или несуществующего) мета-ключа, как это
'meta_query' => array(
array(
'key' => 'featured_image',
'compare' => 'EXISTS', //or "NOT EXISTS", for non-existance of this key
)
)
Это доступно как WP> = 3,5.
Это вопрос, который сработал для меня. Очень похоже на сравнение в ответе T31OS с 2011 года, но поскольку мета -ключ/значение является просто простым текстовым текстом, это не должно быть массивом Meta_Query.
$args = array(
'posts_per_page' => 5,//replaced 'showposts' in version 2.1
'meta_key' => 'featured_image',
'meta_value' => array(''),
'meta_compare' => 'NOT IN'
);
По какой -то причине использование 'meta_value' => '' а также 'meta_compare' => '! =' или же 'meta_compare' => 'не как' Все еще вытащил все сообщения для меня, но, вероятно, это как -то связано с тем фактом, что я создал свою мета -значение, используя плагин Advanced Custom Fields (ACF).
Узнайте больше о пользовательских параметрах поля в кодексе.
Это зафиксировано в WP 3.2-альфа:
Я что-то упускаю?
<?php
$args = array(
'post_type' => 'post',
'posts_per_page' => -1,
'meta_key' => "featured_image"
);
$the_query = new WP_Query( $args );
?>
Разве это не сделает?
!has_featured_image();
Один лайнер FTW.