在页面模板内显示特定帖子的Posts循环?

时间:2012-10-11 作者:Mark R

我想创建一个模板,用于选择要在WordPress页面上显示的5篇特定帖子。

基本上,我必须能够查询5个确切的帖子,以显示在Wordpress页面上,使用WP页面模板和自定义字段来选择准确的5个帖子ID。

编辑:我有这个代码感谢这个网站。但现在我需要能够通过自定义字段添加页面id数组。这能做到吗?

编辑2:实际上代码并没有显示数组中的帖子,而是显示主页上的最新帖子。嗯,嗯。

<?php
$post_id = array(483,454,376);
 $posts = get_posts( $post_id);
 foreach( $posts as $post ) :
  setup_postdata($post);  ?> 
     // you can call use post data inside here like
    <h1><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></h1>

                         <a class="thumb" href="<?php the_permalink(); ?>"><?php dp_attachment_image($post->ID, \'thumbnail\', \'alt="\' . $post->post_title . \'" class="hthumb"\'); ?></a><?php the_excerpt(45); ?><a href="<?php the_permalink(); ?>" class="more">Read More..</a><div style="clear:both;"></div>
<?php endforeach; ?>

4 个回复
SO网友:Xhynk

这是我很久以前在WP上的一个webapp中创建的一个循环的(基本)页面。我只需上传这个,创建一个页面,然后从页面模板中选择“更新页面”,它就会从WP_Query() 后果

如果你想加载5个精确的帖子,只需在我所在的地方替换你的循环即可。

<?php include(CHILD_DIR.\'/lib/global_var.php\');

    /*
    Template Name: Updates Page
    */
    get_header(); ?>
    <h2>What\'s New!</h2>
    </div><!-- end the top wrap -->
</div><!-- end top content -->

<div id="primary" class="with-sidebar">
    <div class="c-s-wrap">
        <div id="content" role="main">
<?php


// The Query
$blog_query = new WP_Query( \'cat=4&posts_per_page=10\' );
$counter = \'0\';
// The Loop
while ( $blog_query->have_posts() ) : $blog_query->the_post();
?>
<div class="blog-post">
    <h3><?php printf(the_title()); ?></h3>
    <span class="post-content"><?php printf(the_content()); ?></span>
</div>
<hr />
<?php
endwhile;

// Reset Post Data
wp_reset_postdata();


?>
        </div><!-- #content -->
        <aside id="sidebar">
            <?php include(CHILD_DIR.\'/sidebar.php\'); ?>
        </aside>
    </div>
    <div style="clear:both;"></div>
</div><!-- #primary -->
<?php get_footer(); ?>

SO网友:Rarst

前端输出由主题控制,因此需要对其进行研究,以获得适当的标记以供重用。

从那里开始,您需要:

创建page template.WP_Queryget_posts().

SO网友:user26096

单件。php我有两个循环,一个是获取另一个页面元素,下一个循环是获取单个帖子的普通循环:

<?php get_template_part( \'loop\', \'panel-news\' ); ?>
<?php get_template_part( \'loop\', \'single\' ); ?>
然后是循环面板新闻。php(我使用一些自定义字段--高级自定义字段插件):

<?php $pgn = new WP_Query("page_id=31"); while($pgn->have_posts()) : $pgn->the_post();?>
            <div id="panel" role="single-news">
                <div class="featimg"><?php the_post_thumbnail(); ?>
                </div>
                <div class="feattxt">
                    <?php $value = get_field(\'panel_text\');
                    if ($value[0]) { ?>
                    <div class="panelsub"><?php the_field(\'panel_text\'); ?></div>
                    <?php } else { ?>
                    <!-- -->
                    <?php } ?>
                </div>                  
            </div>
            <div id="pagename"><?php the_title(); ?></div>
<?php endwhile; ?>
<?php // Restore original Query & Post Data
wp_reset_query();
wp_reset_postdata();?>
它可以在模板文件中的任何位置插入页面片段(或整页)。另一个示例是,在主页(home.php)上插入一个页面片段(三个片段之一):

            <div class="hpanel one">
            <?php $pg1 = new WP_Query("page_id=$pgid1"); while($pg1->have_posts()) : $pg1->the_post();?>
                <div class="himg">
                    <?php the_post_thumbnail( array(304,304) );  ?>
                </div>
                <div class="hreadmore">
                    <a href="<?php the_permalink(); ?>"></a>
                </div>

                <?php $value = get_field(\'page_subhead\');
                if ($value[0]) { ?>
                <h3 class="hpanelhd"><?php the_field(\'page_subhead\'); ?></h3>
                <?php } else { ?>
                <h3 class="hpanelhd"><?php the_title(); ?></h3>
                <?php } ?>
                <div class="hexcerpt">
                <p><?php the_field(\'page_excerpt\'); ?></p>
                </div>
            <?php endwhile; wp_reset_query(); wp_reset_postdata(); ?>
            </div>

SO网友:WP Themes

Do it like this:

global $post; //this is the post object for the wordpress page

/** Assuming your meta key is called "posts_to_show" */
$post_ids_from_meta = get_post_meta( $post->ID, \'posts_to_show\', true );

/** $post_ids_from_meta will contain string of comma delimited post IDs 
    entered from a meta box somewhere in the edit page.
**/

$args = array( 
    \'include\' => $post_ids_from_meta,
    );

$the_posts = get_posts( $args );

foreach( $the_posts as $post ):
    setup_postdata($post);
    /** DO YOUR STUFF HERE **/
endforeach;
结束

相关推荐

Save post meta foreach loop

我的脑子垮了。如何保存此帖子数据?在表单中构建一些键值对。 for ($i = 1; $i <= 3; $i++) { $saved = $meta[$i]; //print_r($saved); //echo $saved[\'key\']; echo \'<p>\'; echo \'<label for=\"meta_k_\'.$i.\'\">Ke