如何使用WordPress在主页上的特殊瓷砖中显示3个最近/查看过的帖子?

时间:2013-09-14 作者:Komeyl

我的主页顶部有以下平铺元素:

    <div class="tile1">
        <div class="tile-textbox" style="color: #22284f;">Just Some Title</div>
    </div>
    <div class="tile2">
        <img class="post-image" src="images/sample-large-2.jpg"/>
        <div class="tile-datebox">
            <img src="images/video-icon.png" >
            <p>2013/2/25</p>
            <div class="tile-info"><h1><a href="index2.html">Title 1</a></h1></div>
        </div>
    </div>
    <div class="tile3">
        <img class="post-image" src="images/sample-mid-2.jpg"/>
        <div class="tile-datebox">
            <img src="images/image-icon.png" >
            <p>2013/5/15</p>
            <div class="tile-info"><h1>Title 2</h1></div>
        </div>
    </div>
    <div class="tile4">
        <img class="post-image" src="images/sample-mid-3.jpg"/>
        <div class="tile-datebox">
            <img src="images/text-icon.png" >
            <p>2013/6/17</p>
            <div class="tile-info"><h1>Title 3</h1></div>
        </div>
    </div>
    <div class="tile5">
        <div class="tile-textbox" style="color: #ffffff;">Another Title</div>
    </div>

</div> <!-- END Tile Holder -->
我想在图块2、3和4中显示3篇最近/查看过的帖子;只是标题、日期和该帖子的图像,它从我定义的自定义字段中获取url,我尝试使用:

.
.
.
    <?php query_posts("post_per_page=3"); the_post(); ?>
            <div class="tile2">
            <img class="post-image" src="<?php echo get_post_meta($post->ID, \'post_image\', true) ?>"/>
            <div class="tile-datebox">
                <img src="<?php echo get_post_meta($post->ID, \'post_icon\', true) ?>" >
                <p><?php the_time(\'F jS, Y\') ?></p>
                <div class="tile-info"><h1><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h1></div>
            </div>
        </div>
        <div class="tile3">
            <img class="post-image" src="<?php echo get_post_meta($post->ID, \'post_image\', true) ?>"/>
            <div class="tile-datebox">
                <img src="<?php echo get_post_meta($post->ID, \'post_icon\', true) ?>" >
                <p><?php the_time(\'F jS, Y\') ?></p>
                <div class="tile-info"><h1><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h1></div>
            </div>
        </div>
        <div class="tile4">
            <img class="post-image" src="<?php echo get_post_meta($post->ID, \'post_image\', true) ?>"/>
            <div class="tile-datebox">
                <img src="<?php echo get_post_meta($post->ID, \'post_icon\', true) ?>" >
                <p><?php the_time(\'F jS, Y\') ?></p>
                <div class="tile-info"><h1><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h1></div>
            </div>
        </div>
<?php wp_reset_query(); ?> 
.
.
.
实际上,这些只是显示3篇最新/浏览过的帖子和一张图片的地方,我的意思是在它们下面会有一个最近帖子的列表和一个摘录(仅供记录)。

问题是,它只得到一个帖子并显示在那里,怎么了?我错过了什么?请帮忙,我是wordpress的新手!

1 个回复
SO网友:s_ha_dum

首先,不要使用query_posts(). 只是不要:

应该注意的是,使用此replace the main query 在页面上可以increase page loading times, 在最坏的情况下more than doubling the amount of work needed or more. 虽然易于使用,但该功能prone to confusion and problems 过后有关详细信息,请参阅下面关于注意事项的注释。

http://codex.wordpress.org/Function_Reference/query_posts (重点矿山)

它造成了各种各样的破坏globals 然后您必须更正的页面。使用新的WP_Query 对象

其次,没有循环,这意味着代码中没有迭代查询结果的内容。

query_posts("post_per_page=3"); the_post(); ?>
  ...
<?php wp_reset_query(); 
The$post 变量将被设置为查询返回的第一篇文章,但其中没有可循环到其他文章的内容。

$qry = new WP_Query("post_per_page=3");
if ($qry->have_posts()) {
  while ($qry->have_posts) { // this is your loop
    $qry->the_post(); // sets $post to the current post in the Loop ?>
      <div class="tile\'.$qry->current_post.\'">
            <img class="post-image" src="<?php echo get_post_meta($post->ID, \'post_image\', true) ?>"/>
            <div class="tile-datebox">
                <img src="<?php echo get_post_meta($post->ID, \'post_icon\', true) ?>" >
                <p><?php the_time(\'F jS, Y\') ?></p>
                <div class="tile-info"><h1><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h1></div>
            </div>
      </div> <?php

  }
} 
wp_reset_postdata();
未经测试,但应该非常接近。

我应该补充一点,上面的代码将复制您在代码中试图实现的内容。然而,您的标题是“如何使用wordpress在主页上的特殊平铺中显示3篇最近/查看过的帖子?”。您的代码所做的只是提取最近发布的帖子,而不是最近查看的帖子。据我所知,WordPress不跟踪页面浏览计数。要做到这一点,您需要一个插件或一个完全不同的代码块。

结束

相关推荐

将PHP变量放入到Java脚本中

我为我的网站创建了一个简单的主题选项页面。选项页面包含三个输入字段。我可以使用get\\u选项输出字段。使用以下命令调用这三个字段:<?php echo get_option( \'map_zoom\' ); ?> <?php echo get_option( \'map_longitude\' ); ?> <?php echo get_option( \'map_latitude\' ); ?> 这些变量用于控制地图的缩放级别、经度和纬度。我