サポート » テーマ » 『…』が『 [&hellip』に誤変換されます

  • 解決済 yohey

    (@yohey)


    『Accentbox』というテーマを使用していますが、『…』が誤変換されます。
    投稿記事の文字数が多い場合は”read more”に切り替わり、指定の文字数直後に『…』と自動で表示されるようなのですが、『…』が『 [&hellip』と表示されて困っています。
    改めて確認すると、『Accentbox』のdemoページも『[&hellip』と表示されていました。
    同じテーマを使用している他の方も『 [&hellip』と表示されていました。
    これを回避する方法はありませんか??
    関係があるかわかりませんが以下当方の環境です。

    ========================
    Mac OSX 10.6、Mac OSX 10.8
    Safari、FireFox、Chrome…(Macにて)
    Chrome(Macのブートキャンプにて)
    FireFox、Chrome…(MacのVMware Fusionにて)

    さくらのスタンダード
    FTP接続…FireFTP
    ========================

10件の返信を表示中 - 1 - 10件目 (全10件中)
  • こんにちは、

    htmlソースは、以下のようになっていますか?

    1.…
    または、
    2.&hellip

    諸事情により、 は全角を半角に読み替えてください

    hellipという文字列を検索して、セミコロンが抜けていないか確認してみてください

    トピック投稿者 yohey

    (@yohey)

    nobita様、こんにちは。

    ブラウザで表示される該当箇所のhtmlソースは以下のようになっております。

    [&hellip</p>

    全てのPHPファイルを検索しましたが、”&hellip”という文字列は存在しませんでした。
    “…”が含まれていて、この事例に関係がありそうなPHPコードを削除してみましたが、変わりませんでした。
    ちなみに試しに削除したsingle.phpのコードは以下のものです。

    <?php if (strlen($post->post_title) > 52) {
    										echo substr(the_title($before = '', $after = '', FALSE), 0, 52) . '...'; } else {
    										the_title();
    									} ?>

    参考URLをお伝えすべきかもしれませんが、公開前のためBasic認証をかけております。

    WordPressの標準の動作では、

    ...

    は、

    &#8230;

    に置換されます。

    実体文字参照の

    &hellip;

    は、そのまま使われます。

    示していただいたコード部分は、投稿タイトル部分になるので、

    Hello World ...

    というタイトルなら、ソースは、以下のように変換されます。

    Hello World &#8230;

    タイトル部分が、上記のように変換されているか、チェックしてみてください

    提示していただいたコードは、タイトルが52文字以上であった場合に、余分な分を切り取って、…を追加するというものになっていますが、日本語タイトルの場合は、strlenでは、正常に動作しないのではないかと思います。余分な事ですが、テストをお勧めします。

    ソースを見ていないので、あれですが、

    the_content(…)をテンプレートから抜き出して、書いてみてもらえますか?

    トピック投稿者 yohey

    (@yohey)

    nobita様、こんにちは。

    余分な部分を切り取って『…』を追加するコードですが、投稿タイトル部分しか見つけられないんです。投稿本文部分にも、似たコードがあるはずなのですが…

    そして投稿タイトル部分のテストをしてみたのですが、タイトルは省略されることなく全文表示されます。仰る通り日本語には適用されていないようです。
    省略され『…』が追加されるのは、投稿本文に対して行われています…

    当方にphpの知識も乏しいので、PHP内を検索する際に問題となりうる関数はどのようなものがあるでしょうか??
    『…』でヒットするのは先日のタイトル部分のソースコードくらいしか見つけられませんでした。

    single.phpの『the_content』部分は以下のようなソースです。

    <div class="post-content box mark-links">
    <?php the_content(); ?>
    <?php wp_link_pages('before=<div class="pagination2">&after=</div>'); ?>
    <?php if($options['mts_tags'] == '1') { ?>
    <div class="tags"><?php the_tags('<span class="tagtext">Tags:</span>','') ?> </div>
    <?php } ?>
    </div><!--.post-content box mark-links-->

    『…』にこだわりは無いので、表記を『・・・』に変更するか、自動省略などは使わず投稿画面で標準機能の『read more』を使えれば良いのですが…

    私事で恐縮ですが、本日から予定があるので返事は来週火曜日以降になるかもしれません。

    私事で恐縮ですが、本日から予定があるので返事は来週火曜日以降になるかもしれません。

    大丈夫です、気にしないでください

    <?php
    if (strlen($post->post_title) > 52) {
       echo substr(the_title($before = '', $after = '', FALSE), 0, 52) . '...';
    } else {
       the_title();
    }
    ?>

    は、

    the_title();

    に置き換えられます。文字列の長さの制限が必要なら、mb_strlen()を使うといいです(必ず文字コード引数を使用して)

    moreに何らかの異常があるかどうかは、

    <!--more続きを読んでちょうだい-->

    などとして、それでもhellipが出現するなら、たぶんmoreの問題ではないんじゃないかと思います。

    当方にphpの知識も乏しいので、PHP内を検索する際に問題となりうる関数はどのようなものがあるでしょうか??

    http://php.net/manual/ja/ref.mbstring.php

    のマルチバイト関数が準備されているばあいは、mb_substr だったら日本語の引数をとる場合、substrは、やばいかもとか考えればいいんじゃないかと思います。

    トピック投稿者 yohey

    (@yohey)

    nobita様、こんにちは。
    返事が遅くなり申し訳ありません。

    title箇所の文字数制限に関しては、『mb_title』に変更したものの動作に変わりは無いようでした。(タイトルに100文字あててみましたが、なぜか省略されませんでした)
    タイトルに関しては52文字も使う事はないと思いますし、問題の『[&hellip』という文字列も出てこないので、ひとまず無視しようかと思います。

    そして投稿記事本文の文字数省略の件ですが、ようやく該当箇所がわかりました。。。
    『functions.php』内にある以下のコードです。

    /*-----------------------------------------------------------------------------------*/
    /*	excerpt
    /*-----------------------------------------------------------------------------------*/
    
    // Excerpt length
    function new_excerpt_length($excerptlength) {
    $snsexcerpt = "52";
    return $snsexcerpt;
    }
    add_filter('excerpt_length', 'new_excerpt_length', 999);
    
    // Remove [...]
    function trim_excerpt($text) {
     return rtrim($text,'[...]');
    }
    add_filter('get_the_excerpt', 'trim_excerpt');

    まずreturn trimの'[…]’を半角の三点リーダではなく、全角の'[・・・]’に書き換えてみましたが、ブラウザに表示されたのは

    [・・・

    という省略文字で、角カッコが出て来てしまいました。

    仕方がないので取りあえずは『$snsexcerpt = “52”;』の数字を”300″に変更して、よほどの長文で書き始めなければ省略文字が出てこないようにしています。

    角カッコ無しで表示されるようになればベストなのですが、他に解決策はございますでしょうか??

    add_filter('excerpt_length', 'new_excerpt_length', 999);
    
    add_filter('get_the_excerpt', 'trim_excerpt');

    を、

    //add_filter('excerpt_length', 'new_excerpt_length', 999);
    
    //add_filter('get_the_excerpt', 'trim_excerpt');

    コメントアウトしてください。

    テンプレートの中に、get_the_excerpt()という関数が使われていると思いますので、

    そこを、the_excerpt()に書き換えてみてください

    ちなみに、get_the_excerptは、WordPress2.3で 非推奨関数になっています。

    直接関係ないですが、ダッシュボードの外観メニューに、メニューとかヘッダーとか背景とかいう項目は表示されていますか?

    トピック投稿者 yohey

    (@yohey)

    nobita様、こんにちは。
    ご指摘頂いた箇所をコメントアウトしたところ、[&hellipの表示は無くなりました。

    ただし、ブラウザ上では

    […]

    のように角カッコ、角カッコ閉じが表示されました…

    htmlソースは

    <p>テストテスト [&hellip;]</p>

    という状態です。

    もう一押しで解決できそうなのですが・・・
    もし他に探して提示すべきコードとして、なにか心当たりがあれば仰ってください。

    テンプレート内を検索してみましたが、get_the_excerpt()という関数は使われていないようでした。すでにthe_excerpt()とされていたので、変更は加えておりません。

    あと外観メニューの件ですが、『メニュー』『ヘッダー』『背景』のいずれもありませんでした。

    functions.phpの最初、<?phpの前に

    <?php add_filter( 'excerpt_more', '__return_null' );?>

    を追加してください

    訂正:get_the_excerpt非推奨の件、非推奨になったのは、引数付の利用でした。引数なしは、現役で使われています。

    あと外観メニューの件ですが、『メニュー』『ヘッダー』『背景』のいずれもありませんでした。

    最新のワードプレスでは、これらの機能が使えるようになっていますが、テーマの設定に依存するため、最新の機能が使えなくなってしまっているのだろうと思います。ないからどうという事はありませんが、暇なときにでも、標準テーマに切り替えて、そういう機能があるんだという事を、知っておくといいと思います。

    トピック投稿者 yohey

    (@yohey)

    nobita様、こんにちは。
    …(半角3点リーダ)綺麗に表示されました!
    公式デモでさえ誤変換していたので諦めかけていましたけど解決できて良かったです。
    ありがとうございました。

    プリインストールされているテーマ(標準テーマ?)を使って、最近一つのブログを作っていましたが、『メニュー』『ヘッダー』『背景』の件はさほど気にしていませんでした。
    こういったことが最新のワードプレスにテーマが対応しているかの目安にもなるんですね…

    ワードプレスを使い始めたのはここ1ヶ月くらいで、まだわからない事だらけですが少しずつ勉強していきます。
    このトピックは解決済みにしますが、また何かあったときはよろしくお願い致します。

10件の返信を表示中 - 1 - 10件目 (全10件中)
  • トピック「『…』が『 [&hellip』に誤変換されます」には新たに返信することはできません。