0

私は次のコードを使用して、ジェネシスの投稿情報を表示しています。しかし、私は問題があります。ブログページやホームページなどの特定のページに投稿情報を表示したくありません。

だから私はいくつかの方法を試しましたが、うまくいきませんでした。

実際に私はページテンプレートを作成しました..page-blog.phppage -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') ) {

しかし、動作していません..あなたは何か考えがありますか?

4

1 に答える 1

1

テンプレート内の特定の関数を特定のページから非表示にするには、次のようにis_page()関数を使用します(about 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_pageおよびhttp://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');
   }; 
  ?>
于 2012-08-02T21:30:51.377 に答える