为什么我在WordPress中只收到一篇带get_posts的帖子?

时间:2015-10-15 07:26:38

标签: php wordpress

更新:我现在知道为什么没有用了。那是因为我试图展示一个私人帖子。笨蛋发生在我们最好的人身上。抱歉。感谢您的帮助。

我试图列出具有某些元键和元值的所有帖子,但我无法获得具有该特定元值的所有帖子。我只得到一个。

我有一个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">&nbsp;</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;
&#13;
&#13;

为什么我只获得一个meta_value 1的帖子,而不是meta_value 1的所有帖子?

5 个答案:

答案 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动作的错误实例