条件在wordpress中不起作用

时间:2012-08-02 21:24:47

标签: php wordpress conditional

我使用以下代码来显示创世记中的信息。但我有一个问题。 我不想在某些特定网页(如博客页面和主页)上显示信息。

所以我尝试了一些方法,但没有工作。

实际上我已经创建了页面模板.. page-blog.php page-home.php

remove_action( 'genesis_before_post_content', 'genesis_post_info' );
add_action( 'genesis_before_post_title', 'child_post_info' );

function child_post_info() {
    if (!is_page('blog')) {
    return;
?>

    <div class="post-info">
        <span class="date published time">
            <time class="entry-date" itemprop="startDate" datetime="<?php echo get_the_date( 'c' ); ?>" pubdate><?php echo get_the_date(); ?></time>
        </span> By 
        <span class="author vcard">
            <a class="fn n" href="<?php echo get_the_author_url( get_the_author_meta( 'ID' ) ); ?>" title="View <?php echo get_the_author(); ?>'s Profile" rel="author me"><?php the_author_meta( 'display_name' ); ?></a>
        </span>
        <span class="post-comments">&middot; <a href="<?php the_permalink() ?>#comments"><?php comments_number( 'Leave a Comment', '1 Comment', '% Comments' ); ?></a></span>
        <?php // if the post has been modified, display the modified date
        $published = get_the_date( 'F j, Y' );
        $modified = the_modified_date( 'F j, Y', '', '', FALSE );
        $published_compare = get_the_date( 'Y-m-d' );
        $modified_compare = the_modified_date( 'Y-m-d', '', '', FALSE ); 
            if ( $published_compare < $modified_compare ) {
                echo '<span class="updated"><em>&middot; (Updated: ' . $modified . ')</em></span>';
            } ?>
    </div>
<?php }
}

请告诉我如何解决这个问题。

立即

我创建了一个新文件 meta-postinfo.php

并保存

<div class="post-info">
...
</div>

并在functions.php文件中..

remove_action( 'genesis_before_post_content', 'genesis_post_info' );
add_action( 'genesis_before_post_title', 'child_post_info' );

function child_post_info() {
    if ( !is_home() && !is_page(array('blog', 'inspiring quotes')) ) { 
        get_template_part('meta', 'postinfo'); 
    }; 
}

上面的代码正在使用博客页面和主页,但不是“鼓舞人心的报价”页面,虽然我已经尝试了

    if ( !is_home() && !is_page('blog') && !is_page('inspiring quotes') ) {

但没有工作..你有什么想法吗?

1 个答案:

答案 0 :(得分:1)

要从特定页面隐藏模板中的给定函数,请使用这样的is_page()函数(隐藏带有大约slug的页面):

<?php
if ( !is_page('about') ) {
// This function will not run on the homepage
}; 
?>

要隐藏您使用的主页中的内容is_Home

<?php
if ( !is_home() ) {
// This function will not run on the homepage
}; 
?>

请参阅:http://codex.wordpress.org/Function_Reference/is_pagehttp://codex.wordpress.org/Function_Reference/is_home

编辑:这不会出现在add_action调用的函数中,而是可以直接写入模板中的任何位置,例如:

<?php
if ( !is_home() ) {
   <div class="post-info">
    <span class="date published time">
    // ... the rest of this display template.
   }; 
  ?>

如果它将在多个模板中使用,您可以将其移动到单独的文件并使用如下:

<?php
if ( !is_home() ) {
   get_template_part('postinfo');
   }; 
  ?>