サポート » テーマ » 過去の投稿が全文表示されてしまう

  • 解決済 deephouse

    (@deephouse)


    バージョン2.7.1で「desk space」というテーマを使っています.

    デモページと異なり,トップページにある過去の投稿が一部でなく全部表示されてしまい,デザインが崩れてしまうので困っています.

    具体的に言うと,上記デモページの
    「Fusce Sagittis Dui Extra Long Title」
    「Gallery Post Example」
    といった箇所です.

    下記に引用しているところが該当部分かと思いますが,
    何が問題で,投稿記事が全文表示されてしまうかわかりません.

    <div id=”subposts”>
    <div class=”fill”>
    <?php
    $recentPosts = new WP_Query();
    $recentPosts->query(‘offset=1&showposts=4’);
    ?>
    <?php while ($recentPosts->have_posts()) : $recentPosts->the_post(); ?>
    <div class=”post block0<?php echo $p_count+1 . “”; ?>”>
    <h2 class=”title”>” rel=”bookmark” title=”Read <?php the_title_attribute(); ?>”>
    <?php the_title(); ?>
    </h2>
    <div class=”subbody”>
    <?php edit_post_link(‘[e]’, ‘<span>’, ‘</span> ‘); ?>
    <?php the_excerpt_reloaded(20, ”, ‘none’, FALSE, ‘more »’, FALSE, 2); ?>
    </div>
    <!–subbody–>
    </div>
    <!–/post–>
    <?php $p_count = $p_count + 1; ?>
    <?php endwhile; ?>
    <?php
    $recentPosts = new WP_Query();
    $recentPosts->query(‘offset=5&showposts=4’);
    ?>
    <?php while ($recentPosts->have_posts()) : $recentPosts->the_post(); ?>
    <div class=”post block0<?php echo $p_count+1 . “”; ?>”>
    <h2 class=”title”>” rel=”bookmark” title=”Read <?php the_title_attribute(); ?>”>
    <?php the_title(); ?>
    </h2>
    </div>
    <!–/post–>
    <?php $p_count = $p_count + 1; ?>
    <?php endwhile; ?>
    <?php $deskspace_alpha_adsense = get_option(‘deskspace_alpha_adsense’); ?>
    <?php if(get_option(‘deskspace_alpha_adsense’) == true) { ?>
    <div class=”spot_alpha”>
    <script type=”text/javascript”>
    <!–
    google_ad_client = “<?php echo $deskspace_alpha_adsense ?>”;
    google_ad_slot = “9684608636”;
    google_ad_width = 580;
    google_ad_height = 25;
    //–>
    </script>
    <script type=”text/javascript” src=”http://pagead2.googlesyndication.com/pagead/show_ads.js”></script&gt;
    </div>
    <?php } ?>
    <div class=”clear”> </div>
    </div>
    <!–/fill–>
    </div>

    HTML,CSSは初心者本を読んだ程度の知識しかなく,原因がわかりません.

    解決策を教えていただけないでしょうか.
    宜しくお願い致します.

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • モデレーター jim912

    (@jim912)

    deephouseさん、こんにちは。

    投稿内容の表示部分ですが、

    <?php the_excerpt_reloaded(20, '', 'none', FALSE, 'more »', FALSE, 2); ?>

    というテーマ独自のPHP関数により出力されています。テーマのfunctions.phpを追っていくと、506行目に

    $text = explode(' ', $text);

    という記述があり、半角スペースで単語を区切って、単語数による制限という処理になっています。当然ながら、日本語は半角スペースで区切る習慣などないため、基本的に全文が表示されてしまうという訳です。

    で、対応方法ですが、PHPのマニュアルサイトにも例示されている下記の関数をテーマのfunctions.phpに追加し、

    function mbStringToArray ($string) {
        $strlen = mb_strlen($string);
        while ($strlen) {
            $array[] = mb_substr($string,0,1,"UTF-8");
            $string = mb_substr($string,1,$strlen,"UTF-8");
            $strlen = mb_strlen($string);
        }
        return $array;
    }

    さらに、506行目を

    $text = mbStringToArray( $text );

    と修正してあげれば、日本語でも抜粋表示が可能になるかと思われます。
    あとはお好みで、抜粋する文字数を変更してあげてください。下記、コードの20と記述されている部分が抜粋文字数になります。

    <?php the_excerpt_reloaded(20, '', 'none', FALSE, 'more »', FALSE, 2); ?>

    トピック投稿者 deephouse

    (@deephouse)

    jim912さん,ご回答いただき,ありがとうございます.

    ご指摘いただいたとおり変更したところ,解決しました.

    トップページに表示される最新の投稿のスタイルが少し変わってしまいましたが,
    (強制的に行間が広くなってしまいました.1行分のスペースが強制挿入されるといいますか…)
    大きな問題ではないですし,自分でPHPの勉強もしてみます.

    やはり,PHPをしっかり理解していないと,使いこなすのは難しいですよね.

    頑張ります.

    本当にありがとうございました.

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • トピック「過去の投稿が全文表示されてしまう」には新たに返信することはできません。