我读了一篇关于如何Display the contents of static page Posts page.
基本上,我必须将此代码放在循环之前:
<?php //This is the code from the tutorial
if ( \'page\' == get_option(\'show_on_front\') && get_option(\'page_for_posts\') && is_home() ) : the_post();
$page_for_posts_id = get_option(\'page_for_posts\');
setup_postdata(get_page($page_for_posts_id));
?>
<div id="post-<?php the_ID(); ?>" class="page">
<div class="entry-content">
<?php the_content(); ?>
<?php edit_post_link(\'Edit\', \'\', \'\', $page_for_posts_id); ?>
</div>
</div>
<?php
rewind_posts();
endif;
?>
我还想包括
the_content
, 但相反
the_title
显示了第一篇帖子(博客)中的:
<div class="entry-content">
<?php the_title(); ?>
<?php the_content(); ?>
<?php edit_post_link(\'Edit\', \'\', \'\', $page_for_posts_id); ?>
</div>
图片:
Code:
loop.php
<?php
if ( \'page\' == get_option(\'show_on_front\') && get_option(\'page_for_posts\') && is_home() ) : the_post();
$page_for_posts_id = get_option(\'page_for_posts\');
setup_postdata(get_page($page_for_posts_id));
?>
<div class="shadow-top">
<!-- Shadow at the top of the slider -->
</div>
<div id="intro2">
<div class="container">
<h2><?php the_title(); ?></h2>
<p><?php the_content(); ?></p>
<?php edit_post_link(\'Edit\', \'\', \'\', $page_for_posts_id); ?>
</div><!-- .container -->
</div><!-- #featured -->
<div class="shadow-bottom">
<!-- Shadow at the bottom of the slider -->
</div>
<div id="content">
<div class="container">
<div id="blog">
<div class="posts">
<?php
rewind_posts();
endif;
?>
</div>
<?php
/* Start the Loop.
*
* In Twenty Ten we use the same loop in multiple contexts.
* It is broken into three main parts: when we\'re displaying
* posts that are in the gallery category, when we\'re displaying
* posts in the asides category, and finally all other posts.
*
* Additionally, we sometimes check for whether we are on an
* archive page, a search page, etc., allowing for small differences
* in the loop on each template without actually duplicating
* the rest of the loop that is shared.
*
* Without further ado, the loop:
*/ ?>
<?php while ( have_posts() ) : the_post(); ?>
(…)
blog.php:
<?php
/**
* Template Name: Blog
* @package WordPress
* @subpackage Prominent
* @since Prominent 1.0
*/
get_header(); ?>
<?php // Start the Main Loop
if ( have_posts() ) : ?>
<?php while ( have_posts() ) : the_post(); ?>
<div class="posts">
<h2><?php the_content(); ?></h2>
</div><!-- .content -->
</div><!-- .posts -->
<?php endwhile; ?>
<?php endif; ?>
<?php get_sidebar(); ?>
</div><!-- .container -->
</div><!-- #content-bottom -->
<?php get_footer(); ?>
有什么建议吗?
EDIT:
现在我正在使用以下代码。它检索页面的特定
the_content 但在检索\\u标题时,它仍然检索第一篇博客文章。
<?php
/**
* Template Name: Blog
* @package WordPress
* @subpackage Prominent
* @since Prominent 1.0
*/
get_header(); ?>
<div class="shadow-top">
<!-- Shadow at the top of the slider -->
</div>
<div id="intro2">
<div class="container">
<?php /* Display the contents of static page Posts page */
if ( \'page\' == get_option(\'show_on_front\') && get_option(\'page_for_posts\') && is_home() ) : the_post();
$page_for_posts_id = get_option(\'page_for_posts\');
setup_postdata(get_page($page_for_posts_id));
?>
<div id="post-<?php the_ID(); ?>" class="page">
<div class="content">
<h2><?php the_content(); ?></h2>
<?php edit_post_link(\'Edit\', \'\', \'\', $page_for_posts_id); ?>
</div>
</div>
<?php
rewind_posts();
endif;
?>
</div><!-- .container -->
</div><!-- #featured -->
<div class="shadow-bottom">
<!-- Shadow at the bottom of the slider -->
</div>
<div id="content">
<div class="container">
<div id="blog">
<div class="container">
<?php // find all content that has the type of video and then to loop through them. ?>
<?php if ( have_posts() ) while ( have_posts() ) : the_post(); ?>
<div id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
<?php if ( is_front_page() ) { ?>
<h2 class="entry-title"><?php the_title(); ?></h2>
<?php } else { ?>
<h1 class="entry-title"><?php the_title(); ?></h1>
<?php } ?>
<div class="entry-content">
<?php the_content(); ?>
<?php wp_link_pages( array( \'before\' => \'<div class="page-link">\' . __( \'Pages:\', \'twentyten\' ), \'after\' => \'</div>\' ) ); ?>
<?php edit_post_link( __( \'Edit\', \'twentyten\' ), \'<span class="edit-link">\', \'</span>\' ); ?>
</div><!-- .entry-content -->
</div><!-- #post-## -->
<?php comments_template( \'\', true ); ?>
<?php endwhile; ?>
</div>
<?php get_sidebar(); ?>
</div><!-- .container -->
</div><!-- #content-bottom -->
<?php get_footer(); ?>
最合适的回答,由SO网友:t31os 整理而成
这是一项相对简单的任务,您只需将一个适当编码的页面模板附加到所选帖子的页面上。
当页面第一次加载时,主查询保存页面上的数据,如标题、内容等,我们可以通过调用the_post
这样我们就可以简单地调用模板标签来生成页面的标题(etc)。然后我们可以打电话query_posts
并用所选的帖子重新填充主查询对象。
这与此处的法典中给出的示例非常相似
http://codex.wordpress.org/Pages#A_Page_of_Posts
这里的主要区别是,我不需要创建第二个查询对象,而是要重用主查询对象(为什么不呢,在这种情况下是有意义的,imho)。
根据需要调整代码(查询参数/HTML/类/ID)。
<?php
/**
* Template Name: Page of Posts
*
* Selectable from a dropdown menu on the edit page screen.
*/
get_header();
?>
<div id="container">
<div id="content">
<?php the_post(); // Setup post data so it\'s possible to call the regular loop template tags ?>
<h2><?php the_title(); ?><h2>
<div <?php post_class(); ?>><?php the_content(); ?></div>
<?php
$args = array(
\'paged\' => (int) get_query_var(\'paged\'),
\'post_type\' => \'post\',
\'order\' => \'desc\',
\'posts_per_page\' => 3,
\'caller_get_posts\' => 1
);
// Now re-define the main query
query_posts( $args );
?>
<?php if( have_posts() ) : ?>
<?php while( have_posts() ) : the_post(); ?>
<h2><?php the_title(); ?></h2>
<div <?php post_class(); ?>><?php the_content(); ?></div>
<?php endwhile; ?>
<?php endif; ?>
</div>
</div>
<?php //get_sidebar(); ?>
<?php get_footer(); ?>
希望这有帮助。。
更新后的回复如下
如果使用
page_for_posts
设置时,不要尝试使用和页面模板,请使用其中一个或另一个,因为两者不能一起工作。
如果要在页面上显示帖子列表/索引,并让本机主题文件处理呈现,请设置page_for_posts
设置(管理>设置>读取)。
当您需要控制一个帖子页面的呈现方式,并对其进行自定义时,而不是在主题文件中摆弄,试图找出哪个文件正在处理输出,然后添加条件逻辑,而是创建一个页面(或选择一个现有页面)并向其附加页面模板。仅由not 设置page_for_posts
设置是否允许使用附加模板呈现此页面。
忽略我的首页设置,显然你可能有一个更合适的页面设置,请注意我没有设置posts页面设置。如果您按照屏幕截图中的设置进行设置,则提供的模板将正常工作,并且帖子页面的行为将与设置帖子页面设置时的行为相同(除非它显然会执行一些自定义操作)。
Summary
-当您设置page_for_posts
设置您预先将模板附加到该页面的任何功能,将其取消设置,模板将按预期工作。
Edit: 实际上,在你的另一个问题中,拉斯特指出了这种行为
Template file for static posts page does not get loaded