これがうまくいくようには思えません - メタ 'featured_image'値をanyに設定した投稿を表示しようとしています。私が言うことができることから、それは正しく設定されています、しかし私は私の頭の上に少し過ぎています。これは私が持っているものです:
<ul>
<?php
global $post;
$myposts = get_posts(array(
'showposts' => 5,
'offset' => 7,
'meta_query' => array(
array(
'key' => 'featured_image',
'value' => '',
'compare' => 'NOT LIKE'
)
)
));
foreach($myposts as $post) {
setup_postdata($post);
$meta = get_post_meta($post->ID, '');
?>
<li>
<a href=""><img src="<?php bloginfo('template_directory'); ?>/timthumb.php?src=<?php if (isset($meta['featured_image'][0]) && !empty($meta['featured_image'][0])): echo $meta['featured_image'][0]; else: ?>/wp-content/themes/SSv2011/images/review-default.gif<?php endif; ?>&w=84&h=60" alt="" /></a>
</li>
<?php unset($myposts); ?>
<?php } ?>
</ul>
クエリ全体を表示するように更新されました。何か案は? :\
WP_Queryに更新しました。投稿が表示されるようになりましたが、「featured_image」内に何かがある投稿のみではありません。それについて何かアイデアはありますか?新しいクエリ
<?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();
?>
空の値では不可能です。参照: meta_valueが空でない場合にのみ投稿を表示する方法
まず、あなたのget_post_meta
呼び出しにはキーがありません。複数の値が必要な場合は、get_post_meta( $post->ID, 'featured_image', true )
やget_post_meta( $post->ID, 'featured_image', false )
にしないでください。
さらに、get_post_meta
呼び出しの結果をここでは$meta['featured_image'][0]
の値の配列を持つように扱っていますが、まだキーを指定していません。つまり、その時点で何かを含むことはほとんどありません。
私はget_post_meta
呼び出しにキーがないことが主な問題であると思います。
さらに、!=
演算子に戻ることをお勧めします。NOT LIKE
は空の文字列の比較には実際には適切ではないでしょう。そのSQLがどのように見えるか想像してください。
WHERE meta_value NOT LIKE '%%'
ここで、等号比較を使用しているとします。
WHERE meta_value != ''
..私たちがチェックしようとしているのはまさにその通りです。空の値以外の値を持つメタフィールドです。