0

编辑:好吧,我不能is_page有条件地处理它。所以我写了以下代码 - 效果很好,但不是很好。有什么建议么?

<?php $args = array( 'post_type' => 'page' );?>  <!-- get only pages -->

<?php query_posts($args); ?>

<?php while (have_posts()) : the_post(); ?>  <!-- loop with pages starts -->

<?php $id = get_the_ID(); ?>  <!-- get post/pageID --> 

<?php   if ($id == 5) : include( get_stylesheet_directory() . '/page_special.php' );

        else: include( get_stylesheet_directory() . '/page_all.php' );

        endif; 
?>

我正在尝试使用一页布局制作 wordpress 主题。因此我将我的 page.php 编辑成这个,以获得页面的不同标题和内容

<?php $args = array( 'post_type' => 'page' ); ?>
<?php query_posts($args); ?>
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>

<section id="<?php the_title(); ?>">

<header class="entry-header">
<h1 class="entry-title"><a name="<?php the_title(); ?>"></a>&nbsp;</h1>
</header> 
<div class="entry-content"> <?php the_content(); ?> </div>

</section>

<?php endwhile; endif; ?>

现在我想插入 if 条件

is_page ('about') -> get_page_template ('about')

或类似的东西,但 Wordpress Codex 说,在循环内"is_page"标签不起作用。

我不想在同一个页面模板中编写所有不同的部分模板。当您在页面上时,有没有办法调用不同的页面模板?

4

3 回答 3

0
if ( is_page( 'about' ) ) {

    $page_template =  dirname( __FILE__ ) . '/about_template.php';
}

这应该有效。

于 2013-05-04T19:48:34.633 回答
0

你可以在循环内试试这个

<?php 
 // get the permalink that is http://www.somesite.com/about/
 $page = get_permalink();
     // extract will give you this Array ( [dirname] => http://www.somesite.com/about [basename] => about [filename] => about )
 extract(pathinfo($page));
// now you can use $filename to test if you are in the right page   
if ($filename == 'about') {
$page_template =  dirname( __FILE__ ) . '/about_template.php';
}
   ?>

提取如何工作 http://php.net/manual/en/function.extract.php

于 2013-05-13T21:41:22.937 回答
0

在您的主题文件中使用该template_redirect功能,functions.php例如:

function so16377966_template_redirect()
{
    if( is_page( 'about' ) )
    {
        include( get_template_directory() . '/about_template.php' );
        exit();
    }
}
add_action( 'template_redirect', 'so16377966_template_redirect' );
于 2013-05-04T20:21:53.660 回答