为什么这段代码可以在本地运行,但在网上中断?

时间:2012-07-09 作者:egr103

出于某种奇怪的原因,这段代码在我本地安装的Wordpress上运行得非常完美,但当我将其放到web服务器上时,代码只是一次又一次地重复相同的两篇文章,并且没有超出相同的两篇文章。我使用的是InfiniteScroll(不是WP插件,而是我手动安装的)。我的循环有什么问题吗?

EDIT

下面是从single中完整获取的代码链接。php:http://pastebin.com/dtiSHUYP

<div id="post-wrap">


                <?php // Show all posts within this category
                $paged = (get_query_var(\'paged\')) ? get_query_var(\'paged\') : 1;
                $args= array(
                    \'category_name\' => $cat->slug, 
                    \'paged\' => $paged,
                    \'cat\' => \'-12\',
                    \'posts_per_page\' => 2,
                    \'post__not_in\' => array( $post->ID )
                );
                query_posts($args); ?>

                <?php $current_post_date = $post->post_date; ?>

                <?php if( have_posts() ) : while ( have_posts() ) : the_post(); ?>

                <?php if ($post->post_date < $current_post_date) {  ?>

                <article>
                    <figure>

                      <?php
                          $image_link=get_post_meta($post->ID,\'Image_Link\',true);
                          if($image_link != \'\') {
                          echo \'<a href="http://example.com">\'. get_the_post_thumbnail() .\'</a>\';
                          } else {
                          echo get_the_post_thumbnail();
                          }
                      ?>

                      <figcaption>
                            <?php
                            // Call in the contents of a custom field called Credit and if custom field in admin panel is empty don\'t display <p> tags otherwise wrap contents of custom field in <p> tags
                            $credit=get_post_meta($post->ID,\'Credit\',true);
                            if($credit != \'\') {
                            echo \'<p>\'. $credit .\'</p>\';
                            } else {
                            echo \' \';
                            }
                            ?>
                      </figcaption>
                    </figure>

                    <?php
                    $sub_title=get_post_meta($post->ID,\'subtitle\',true);
                    if($sub_title != \'\') {
                    echo \'<h1>\'. get_the_title() .\'<span> / \'. $sub_title . \' / \' . get_the_time(\'l jS F\') .\'</span></h1>\';
                    } else {
                    echo \'<h1>\'. get_the_title() .\'<span> / \' . get_the_time(\'l jS F\') .\'</span></h1>\';
                    }
                    ?>

                    <?php the_content(\'\'); ?>

                    <div class="a-options">
                        <a href="#post-<?php the_ID(); ?>" class="comments scrollto">Comment</a>

                        <!-- share -->
                        <div class="share-button">
                            <div class="buttons">
                                <div class="facebook">                          

                                    <div class="fb-like" data-send="false" data-layout="button_count" data-width="450" data-show-faces="false" data-font="arial"></div>

                                </div>

                                <div class="twitter">

                                    <a href="https://twitter.com/share" class="twitter-share-button" data-text="<?php the_title(); ?>" data-url="<?php the_permalink(); ?>" data-via="kettlesyard" data-related="kettlesyard" data-hashtags="kettlesyard">Tweet</a>
                                    <script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0];if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src="//platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");</script>

                                </div>

                                <div class="pinterest">
                                    <a href="http://pinterest.com/pin/create/button/?url=<?php the_permalink(); ?>" class="pin-it-button" count-layout="horizontal"><img border="0" src="//assets.pinterest.com/images/PinExt.png" title="Pin It" /></a>
                                </div>

                            </div>

                            <span class="pseudo-button">&#043; Share</span>
                         </div> <!--! /share -->

                    </div><!--! /a-options -->


                    <?php if ( in_category( \'contact\' ) ) : // Display nothing ?>

                        <?php // Else, show comments
                        else : ?>

                            <?php global $withcomments;
                            $withcomments = 1;
                            comments_template(); ?>

                    <?php endif; ?>

                  </article>

                  <?php } ?>




                <?php endwhile; ?>



                <div id="next-prev-wrap" class="nextprev"><?php next_posts_link(); ?> <?php previous_posts_link(); ?></div>




                <?php endif;  wp_reset_query(); ?>

                </div>

1 个回复
SO网友:EAMann

你的第一个问题是query_posts. 该函数不用于创建对数据库的新查询;相反,它用于修改现有的全局查询。

读取herehere 有关您可以使用什么的更多信息。

其次,模板中有一些奇怪的代码,老实说,这些代码本来就不应该工作。该行:

$args= array(
    \'category_name\' => $cat->slug, 
    \'paged\' => $paged,
    \'cat\' => \'-12\',
    \'posts_per_page\' => 2,
    \'post__not_in\' => array( $post->ID )
);
。。。正在引用代码中其他地方未看到的变量。即$cat$post. 你引用的事实$post 告诉我你要么在页面的更高位置有其他查询,要么在另一个循环中。。。在任何一种情况下query_posts() 肯定会受伤的。

此外,本地安装和网络安装之间的细微差异也可能起到一定作用。如果您在两个系统中使用的WP、PHP、MySQL等版本不完全相同,那么可能会出现这种奇怪的差异。

结束

相关推荐

Help with Changing loop.php?

我正在尝试编辑循环,因此如果它在类别ID 60上,它将显示“照片”,而不是“博客”。。我该怎么做?博客 <?php if(is_archive()&&!is_category()&&!is_tag()&&!is_search()){ ?> <!-- BEGIN .archive-title --> <h1 class=\"page-title\"> &