更新:我现在知道为什么没有用了。那是因为我试图展示一个私人帖子。笨蛋发生在我们最好的人身上。抱歉。感谢您的帮助。
我试图列出具有某些元键和元值的所有帖子,但我无法获得具有该特定元值的所有帖子。我只得到一个。
我有一个foreach循环和下一个代码列出我的所有帖子:
$args = array(
'post_type' => 'produs',
'meta_key' => 'sticky_post',
'meta_value' => 1
);
$posts = get_posts($args);
<?php
foreach($posts as $post){ ?>
<div class="product" id="product-<?php echo $post->ID; ?>">
<div class="thumb new_product_thumb">
<?php
$thumb_args = array('class' => 'product-img', 'alt' => the_title_attribute( 'echo=0' ) );
?>
<a class="product-thumb read-more" style="" href="<?php echo the_permalink(); ?>" title="citește mai departe">
<?php echo the_post_thumbnail('product-listing', $thumb_args); ?>
</a>
<?php //if ( current_user_can('manage_options') ) {
if (get_field('tva_produs',$post->ID) == '9') echo '<div class="tva_redus"></div>';
// var_dump($top_sellers_new);
//}
?>
</div>
<h2>
<a class="read-more" style="" href="<?php echo the_permalink(); ?>" title="citește mai departe">
<?php the_title(); ?>
</a>
</h2>
<div class="product-content">
Pret: <?php echo get_field('pret_nou', $post->ID); ?> lei
</div>
<a class="read-more more2" href="<?php echo the_permalink(); ?>" title="citește mai departe"><p>Detalii produs</p> <span class="arrow-next"> </span></a>
<?php $id = get_the_ID();?>
<form id="adauga_in_cos" action="<?php echo THEME_URL; ?>/product.php?action=add&product=<?php echo $id; ?>" method="post">
<input type="hidden" name="produs_id" id="produs_id" value="<?php echo $id; ?>" />
<input type="hidden" name="produs_price" id="produs_price" value="<?php echo get_field( 'pret_nou', $id ) ?>" />
<input type="hidden" name="produs_name" id="produs_name" value="<?php echo $post->post_title; ?>" />
<a href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>" class="add_to_sc" id="add-<?php echo $id; ?>"></a>
<!-- <input id="adauga_but" class="add_to_sc" type="submit" value="Adauga in cos" />-->
</form>
<div class="horizontal"></div>
</div>
<?php } ?>
&#13;
为什么我只获得一个meta_value 1的帖子,而不是meta_value 1的所有帖子?
答案 0 :(得分:0)
您是否尝试过添加
'numberposts' => -1,
这应该让get_post获取所有可用的帖子,如果这不起作用,除非您提供更多代码,否则我们无法帮助您
答案 1 :(得分:0)
试试这个,您可以使用 posts_per_page 参数,并将其设置为-1
$args = array( 'post_type' => 'attachment', 'posts_per_page' => -1, 'post_status' =>'any', 'post_parent' => $post->ID );
$attachments = get_posts( $args );
答案 2 :(得分:0)
&#39; meta_value&#39; - 请注意,&#39; meta_key = keyname&#39;必须也出现在查询中。另请注意,排序将按字母顺序排列,对于字符串(即单词)来说很好,但对于数字可能是意外的(例如1,3,34,4,56,6等,而不是1,3,4,6,正如你自然期望的那样,34,56)。
$args = array(
'post_type' => 'produs',
'meta_key' => 'sticky_post',
'meta_value' => 1,
'posts_per_page' => -1
);
$myposts = get_posts($args);
foreach ( $myposts as $post ) : setup_postdata( $post ); ?>
<a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
<?php endforeach; wp_reset_postdata(); ?>
答案 3 :(得分:0)
请尝试使用WP_Query而不是get_posts
如果您只需要一系列帖子,并且不需要查询对象-use get_posts()。否则,如果您确实需要访问顶部的查询对象方法,分页或粘贴帖子,则应使用WP_Query。
通常(默认情况下使用WP_Query对象) - WordPress总共查询了多少帖子 - 即使你只是在第一个10之后。它这样做可以执行分页。所以get_posts()实际上(稍微)更快(它也忽略了粘贴帖子)。
答案 4 :(得分:0)
这里有三个问题
不要滥用$posts
全局,您将其用作自定义变量,因此您正在破坏全局。使用自定义变量名称,例如`$ posts_array。
如果您要使用$post
,(,您应该使用它来设置postadat ),您应该将其重置为原始值
将posts_per_page
设置为-1
以获取包含所需自定义字段的所有帖子
您的代码应如下所示:(未经测试)
$args = array(
'post_type' => 'produs',
'meta_key' => 'sticky_post',
'meta_value' => 1,
'posts_per_page' => -1
);
$posts_array = get_posts($args);
foreach ( $posts_array as $post ) {
setup_postdata( $post );
// All your other code
}
wp_reset_postdata();
如果这不起作用,您应该确保没有pre_get_posts
动作的错误实例