代码按特定顺序分解

时间:2013-05-02 22:53:20

标签: php wordpress

我多年来一直是贸易设计师,但是我正在为一个客户使用WordPress,并且已经设法使用钩子......我现在处于停滞状态。

在主页上,我有两个区域将从数据库中提取信息:

<?php 
    $thumb_posts = get_posts(array('category' => '6', 'orderby' => 'rand', 'numberposts' => 2, 'meta_key' => '_thumbnail_id' ));
if($thumb_posts) { ?>
<?php foreach( $thumb_posts as $post ) {
echo '<div class="feature"><div class="thumbnail">
<a href="' . get_permalink($header_thumb->ID) . '">' . get_the_post_thumbnail($header_thumb->ID,array(240,170)) . '</a></div>';
$url = get_permalink($post->ID);
$filecontent = file_get_contents('https://graph.facebook.com/?ids=' . $url);
$json = json_decode($filecontent);
$count = $json->$url->comments;
if ($count == 0 || !isset($count)) {
$count = '0';
} elseif ( $count == 1 ) {
$count = '1';
} else {
$count .= '';
}
echo '<h3 class="title"> <a href="' . get_permalink($header_thumb->ID) . '#comments"     class="comments">' . $count . '</a> <a href="' . get_permalink($header_thumb->ID) . '"> ' . get_the_title($ID) . ' </a> </h3></div>';
} ?>

我没有写,但是用随机标题和缩略图调用facebook评论计数。

这是我的问题......一旦我将第二个代码放在此之后它就会抛出计数/图像检索。但是,如果我放置此代码之前一切都很好。

<?php 
$thumb_posts = get_posts(array('category' => '6', 'orderby' => 'rand', 'numberposts' => 2, 'meta_key' => '_thumbnail_id' ));
if($thumb_posts) { 
?>

<?php 
global $post;
$myposts = get_posts('numberposts=20');
foreach($myposts as $post) :
?>
<li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a> | 
<span class="post-info"> <?php echo human_time_diff( get_the_time('U'),
current_time('timestamp') ) . ' ago'; ?> </span></li>
<?php endforeach; ?>

在我的思考过程中,我需要以某种方式使它成为第二个代码不会以某种方式抛弃第一个独立代码。

1 个答案:

答案 0 :(得分:1)

由于这组线路,它不是“从相同的参数中拉出来的”:

global $post;
$myposts = get_posts('numberposts=20');
foreach($myposts as $post) :

按顺序:

  1. 通过执行global $post,您将提升对Wordpress设置的全局变量$post的引用。 $post代表当前帖子。
  2. 然后,您可以从WP获得一些帖子并将其设置为$myposts。这很好。
  3. 什么是,但是,您使用唯一元素$myposts循环$post。最后一项任务导致Wordpress的全局$post被重置并破坏所有其余部分。
  4. 请考虑改为:

    <?php 
    global $post;
    $myposts = get_posts('numberposts=20');
    foreach($myposts as $current_post) : 
    ?>
    

    这根本不会修改全局范围,这是Wordpress保存一些内容的地方。