web-dev-qa-db-ja.com

<! - More - >機能していない

The_contentを出力した以下のブログテンプレートがあります。 <!--more-->を配置しました

しかしそれは機能しているようには見えない、

http://www.milknhny.co.uk/DVine/?page_id=19

これが機能するためには、関数内に含める必要があるものはありますか?

私のブログテンプレートのコード

<?php
/*
Template Name: Blog Template
*/
 ?>

<?php get_header();?>
<?php echo get_the_post_thumbnail($post->ID, 'single-post-thumbnail'); ?>
<div id="maincontentwrap" role="main">
<?php query_posts('showposts=5'); ?>
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
 <div class="datebackground"><span class="day"><?php echo get_the_date('j'); ?></span>    <span class="month"><?php echo get_the_date('M'); ?></span></div>
<div class="postsh1"><?php echo get_the_title(); ?></div>
<div id="blogwrapper">
Written by <?php the_author_posts_link() ?> in <?php the_category(); ?>
<?php the_content('read more...'); ?>

<br>
<div class="pagedivider"></div>
</div>  
<?php endwhile; else: ?>
<p><?php _e('Sorry, no posts matched your criteria.'); ?></p>
<?php endif; ?>
</div><!-- #content -->
<?php get_footer(); ?>

編集

私はこれをTwenty Twelveテーマの中で見つけました、そして、私はこれを私自身のものに合わせようとしました - しかし、実際のコードはエラーです...

function DTheme_excerpt_length( $length ) {
return 40;
}
add_filter( 'excerpt_length', 'DTheme_excerpt_length' );

if ( ! function_exists( 'DTheme_continue_reading_link' ) ) :
/**
 * Returns a "Continue Reading" link for excerpts
 *
 * @since Twenty Ten 1.0
 * @return string "Continue Reading" link
 */
function DTheme_continue_reading_link() {
return ' <a href="'. get_permalink() . '">' . __( 'Continue reading <span class="meta-  nav">&rarr;</span>', 'DTheme' ) . '</a>';
}
endif;

/**
 * Replaces "[...]" (appended to automatically generated excerpts) with an Ellipsis and twentyten_continue_reading_link().
 *
 * To override this in a child theme, remove the filter and add your own
 * function tied to the excerpt_more filter hook.
 *
 * @since Twenty Ten 1.0
 * @return string An Ellipsis
 */
function DTheme_auto_excerpt_more( $more ) {
return ' &hellip;' . DTheme_continue_reading_link();
}
add_filter( 'excerpt_more', 'DTheme_auto_excerpt_more' );
?>

これがうまくいくためには、上記を適応させる必要があるでしょうか。

編集

こんにちはすべて、これは以下の素晴らしい助けの後に部分的に働いているように見えます、しかしそれはまだ内容の覆いの中に表示されていません

<?php get_header(); ?>
<div id="maincontentwrap" role="main">
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
<div class="datebackground"><span class="day"><?php echo get_the_date('j'); ?></span>    <span class="month"><?php echo get_the_date('M'); ?></span></div>
<div class="postsh1"><?php echo get_the_title(); ?></div>
<div id="blogwrapper">
Written by <?php the_author_posts_link() ?> in <?php the_category(); ?>
<?php the_content(); ?>

 <br>
<div class="pagedivider"></div>
</div>  
<?php endwhile; else: ?>
<p><?php _e('Sorry, no posts matched your criteria.'); ?></p>
<?php endif; ?>
</div><!-- #content -->
<?php get_footer(); ?>

Screenshot of further info on click

4
Kirsty Marks

私はあなたの問題に寄与しているかもしれないいくつかのことを見ます。

まず、Template Hierarchyで指定されているhome.phpを使用するのではなく、ブログ投稿インデックスを表示するためにカスタムページテンプレートを使用しています。 <!--more-->タグは単数ページでは動作しないので、デフォルトのクエリでファンキーなことをしているので(これについては後ほど詳しく説明します)、$moreが依存するグローバルな<!--more-->は次のように設定されないかもしれません。あなたはそれがあることを期待しています。

ブログ投稿インデックスとしての静的ページの適切な設定

それで、最初のステップはブログ投稿インデックスとして静的ページのための適切な設定をセットアップすることです:

  1. 選択した静的ページがDashboard -> Settings -> ReadingPosts Pageとして選択されていることを確認してください。
  2. カスタムページテンプレートの名前をhome.phpに変更します。
  3. PhpDocヘッダからTemplate Name: Blog Templateタグを削除します
  4. (仮定:あなたは既にフロントページとして選択された静的ページを持っています)

メインクエリを踏みにじるな

それだけでは問題が解決しない場合は、次に調査する問題は、query_posts()を使用したデフォルトのクエリに悩まされている方法です。 query_posts()は、決して使わないでください。

ブログ投稿のインデックスを指定した数の投稿を表示するように設定したい場合は、次のように$querypre_get_postsをフィルタリングします。

function wpse76634_filter_pre_get_posts( $query ) {
    if ( is_home() && $query->is_main_query() ) {
        $query->set( 'posts_per_page', '5' );
    }
}
add_action( 'pre_get_posts', 'wpse76634_filter_pre_get_posts' );

それから、テンプレートファイルのquery_posts()への呼び出しを取り除きます。

<!--more-->の正しい使い方

それでも問題が解決しない場合は、次のステップは<!--more-->タグ自体の使用方法を確認することです。

タグが正確に<!--more--><!--moreの間、またはmore-->の間にスペースがないことを確認してください。 。

テンプレート外の問題

それでも問題が解決しない場合は、functions.phpまたはPluginのどちらかに、<!--more-->タグの機能を変更しているコードがある可能性があります。

プラグイン関連の問題をテストするには、すべてのプラグインを無効にして、デフォルトのテーマ(現在はTwenty Twelve)に切り替えて<!--more-->タグが正しく機能するかどうかを確認します。それでも正しく動作する場合は、プラグインを1つずつ再度有効にします。 <!--more-->タグがまだすべてのプラグインを有効にしても正しく機能する場合、問題はテーマのどこかにあります。

次のステップはあなたのテンプレートファイルを除外することです。上記の手順に従った場合は、ブログ投稿インデックスを表示するためにWordPressがhome.phpにフォールバックするように、home.php.oldの名前をindex.phpに変更します。次に、<!--more-->タグが正しく機能するかどうかを確認します。

なら、問題はあなたのテンプレートです。もしがそうでなければ、問題はfunctions.phpのどこかにあります。

2
Chip Bennett