海外版テーマで自動でread moreが(・・・さらに)と表示されるのを別の日
-
こんにちは
tinymceがテキストモードだと
<!--more-->
と入れると思いますが
<!--moreもっと読んでくれよ-->
と書いてみてください
コアの翻訳ファイルは、wp-content/languages/にあります。
デフォルトで自動に日本語が表示される仕組み
wp-config.phpの以下の部分の設定で、何語を読み込むかが決まります
/** * ローカル言語 - このパッケージでは初期値として 'ja' (日本語 UTF-8) が設定されています。 * * WordPress のローカル言語を設定します。設定した言語に対応する MO ファイルが * wp-content/languages にインストールされている必要があります。例えば de.mo を * wp-content/languages にインストールし WPLANG を 'de' に設定することでドイツ語がサポートされます。 */ define ('WPLANG', 'en_US');
nobitaさんありがとうございます。
上記の今後作成する記事で好きなreadmoreにする方法はnobitaさんのおっしゃるとおりでたまに使っています。
できれば、今回根本的な部分を変更したいと思いました。デフォルトで日本語を読む仕組みについてですが、今回の「Supernova」は日本語ファイルは用意されていないので、原則英語で読み込まれているのですが、
例えばトップページの記事を抜粋表示にするとread moreと表示されるのですが、(このread moreはja.po/moファイルやその部分を探して書き換える方法で日本語にできると思うのですが・・・)、全文表示を選択してmoreタグを使用していると、自動的に(・・・さらに)と表示されて、この(・・・さらに)という文字がどこからやってきたのかわからなくて変えられないと言った具合です。
もしかしたら、使用しているプラグインでそういうのがあるのかも知れませんね。
もう一度頑張って探してみます。ありがとうございました。
(追加です)
xamppで全てのプラグインを外して海外版テーマの「Supernova」をインストールしてみました。
デフォルトでは翻訳ファイルは入っていません。その状態で再度見てみるとやはり(さらに・・・)と表示されます。
他にも今確認すると「アーカイブ」や「カテゴリー」などもカタカナ(日本語表記)で表示されてます。おそらく海外版なので、デフォルトでは英文表記ではないかと思います。
これは、もしかして一部WordPress3.71日本語版から読み込んで翻訳しているから海外版テーマでも反映されているのではないでしょうか?そのあたりの仕組みや確認方法を教えていただけると幸いです。
まずは
テーマの the_content()の引数がどうなっているかによります
<?php the_content( __( 'Continue reading <span class="meta-nav">→</span>', 'twentythirteen' ) ); ?>
翻訳関数の二番目の引数のテキストドメインtwentythirteenをテーマの翻訳ファイルは、日本語にします
1番目の引数が、空だった場合は、(more…) として、日本語では、(続きを読む…)に変換されます。
nobitaさん、何度もありがとうございます。
今該当テーマの全てのphpファイルで確認したのですが、loop-single.phpとloop-page.php
の二つのファイルにthe_content()の記述があったのですが、どうも翻訳関数もありませんし、従ってテキストドメインの指定もないようなのです。
念のため、ワードプレスデフォルトのテーマは全部削除してましたが(wordpressのlanguageフォルダにはデフォルトテーマのja.po/moファイルは残っていますが)。先ほどの、日本語部分ですが、ウィジェットでカテゴリーやアーカイブは日本語になっているので、結局この、(さらに・・・)だけが、なぜか勝手に日本語になってるみたいですね。プラグインも全部削除しましたし、さらにでテーマのファイルも検索しましたが、全くお手上げです。抜粋表示にすると普通にread moreになるんですが、本文表示でmoreタグ利用だと(さらに・・・)と表示されてしまいます><
もうお手上げですかね・・・
<?php /* * Loop used for single pages * */ if (have_posts()) : while (have_posts()) : the_post(); ?> <article <?php post_class(); ?> id="post-<?php the_ID(); ?>"> <h2 class="single_heading post_title"><?php the_title(); ?></h2> <?php get_template_part('includes/before', 'post'); ?> <div class="entry" id="entry"> <span class="supernova_thumb"><?php supernova_thumbnail(); ?></span> <?php the_content(); ?> <span class="page_links"><?php wp_link_pages(array('before' => 'Pages: ', 'next_or_number' => 'number')); ?></span> </div> <?php edit_post_link(__('Edit this entry', 'Supernova'),'','.'); ?> </article> <?php get_template_part('includes/after', 'post'); if(!supernova_options('post-comment')){ comments_template();} supernova_count_post_views(get_the_ID()); endwhile; endif; ?>
<?php /* * Loop used for pages, and also for all page templates */ ?> <?php if (have_posts()) : while (have_posts()) : the_post(); ?> <div class="post" id="post-<?php the_ID(); ?>"> <h2 class="post_title page_title"><?php the_title(); ?></h2> <div class="entry"> <span class="supernova_thumb"><?php supernova_thumbnail(); ?></span> <?php the_content(); ?> <?php wp_link_pages(array('before' => 'Pages: ', 'next_or_number' => 'number')); ?> </div><!--entry --> <?php edit_post_link('Edit this entry.', '<p>', '</p>'); ?> </div><!--post --> <?php if(!supernova_options('page-comment')) { comments_template(); }?> <?php endwhile; endif; ?>
お世話になります。
作者にも聞いてみたんですが、わかりません。質問の仕方を少し変えてみたいのですが、日本語ワードプレスを使用したうえで、日本語翻訳ファイルが用意されていない海外版テーマを利用している場合について
なおかつ、一応何もプラグインを入れていないようなまっさらな状態でも例えば、Pagenation部分で普通は「next」と表示される部分が、海外無料テーマ(ja.poファイルなし)を次々と変えていった場合、ひとつだけ「次に」と表示されるテーマがあったりします。(ちなみにこのテーマはワードプレスからインストールできるomegaというテーマでした)
こういうのは、何故、起こるんでしょうか?(さらに・・・)というのも同じような感じなんですよね。
抜粋表示にすると普通にread moreになって、そこには翻訳関数が設定されていて、翻訳ファイルを入れると変更できるのですが、excerptからfull content:本文表示にかえてmoreタグを使用すると(さらに・・・)と表示されてしまうんです。(こんなのは今使ってるワードプレスからインストールできるsupernovaだけなんです)これは、もしかして、作者がテーマ作成のために利用しているjsとかそんなのが影響しているんでしょうか?
作者にどう説明して調べてもらえばいいのか教えてもらえると幸いです。
php詳しくないので、詳しくないなりにphpファイルは全部見たんですが、わかりませんでした。
よろしくご教授お願いします。jump-upさんが、作者さんに、質問されているスレッドを拝見したら
すでに、レスがついていたのですが、さらに・・・ の件じゃなかったので
お役に立てるかもしれないと思い、書かせていただきますね。テーマ内の functions.php 一番最後の部分で、関数 supernova_new_excerpt_more が
設定されてます。
抜粋した記事を表示するとき文末が
デフォルトだと、[…] になってしまうので、… Read More に変更されるようになってます。この … Read More が、翻訳ファイルで翻訳可能となってます。
対策としては
(1)子テーマの functions.php 上書きする
(2)テーマのアップデートのたびに functions.php を書き換える(1)の場合
この関数よりちょっと上に after_setup_theme アクションを使った
supernova_theme_setup という関数がありますから
これを参考にして子テーマの functions.php に関数を書かれたら良いと思います。(2)の場合
アップデートのたびに、supernova_new_excerpt_more を削除したり書き換えるのは
面倒ではありますが、簡単にできるという点では良いのではないかと思います。
(カスタマイズする箇所が多くなってくると、けっこう忘れちゃいますが。。。)あと翻訳ファイルですが
上述した functions.php の supernova_theme_setup 関数で指定されています。
(108行目あたりです)今回の問題を解決するにあたって、子テーマで何か作業するよりも
このテーマには poファイルが用意されているので、テーマの日本語ファイルを
自作されるのが、もしかしたらベターな方法なのかもしれないですね。さいごに
海外無料テーマ(ja.poファイルなし)を次々と変えていった場合、ひとつだけ
「次に」と表示されるテーマ
というのも、もしかしたらこのテーマと同じようなパターンで
functions.php に関数を書いて、ページネーションをカスタマイズしてて
たまたま「next」と表示される部分が、翻訳可能になっていたのかもしれないです。推測にすぎませんが(^^ゞ
すてきなサイトが完成しますように。
5ekiさん、お世話になります。
詳細な説明ありがとうございます。
私のホームページをご覧頂くとわかりやすいんですが、
ホームページ(トップページ)には、タブがあって、最近の記事と人気の記事を表示できるようになっています。そして、
最近の記事(デフォルトでトップページに表示される)については、full contentとmore-linkの表示形式(オプションでfull contentかexcerptか選択できてfull contentにmoreタグをつけて表示させています)
人気の記事についてはexcerpt表示形式(ここはオプションがなくてexcerpt形式になってしまいます)
という形になっていると思います。翻訳ファイルは、作者にも送付していますが、まだ、翻訳対応が十分じゃないところがあって、次回バージョンで色々改善してくれるとのことなんですが、一応、自分で作った翻訳ファイルを設定しています。
その翻訳ファイルを作りに当たり excerpt部分は5ekiさんがおっしゃるように[…]をread moreに変更していて、さらに翻訳ファイルで(さらに・・・)と設定して表示するようになっています。
ということで、excerptのread moreを翻訳ファイルの言葉を変えて好きに変えることは可能なんですが、そもそも、翻訳ファイルが設定されていない状態で、最近の記事をfull contentとmore-link形式で表示すると(さらに・・・)と日本語が表示されて、この日本語の由来がわからないという状況です!
同様に、「次に」と日本語が表示されるテーマも翻訳ファイル(ja.po/mo)はどこにもない状態です。それについても自分でpotファイルを作成してみましたが、該当はみあたりませんでした。
というような状況なので、翻訳ファイルが用意されていない状況で日本語が表示されるのはどういう場合なのかわからず悪戦苦闘している状況です。
ありがとうございました!
追加します。ちょっとわかりにくいかもしれないので・・・
翻訳ファイルで(さらに・・・)と日本文を入れたのは、自動でfull contentとmore-linkで設定したものが(さらに・・・)と日本語表示されていたためで、
別の言い方をすると
翻訳ファイルでread moreを(続きを読む)とかに変更しても、excerpt表示のread moreは(続きを読む)と変更されますが、full contentとmore-linkで表示しているものは、(さらに・・・)としか表示されないということです。以上よろしくお願いします。
訂正
別の言い方をすると
翻訳ファイルでread moreを(続きを読む)とかに変更しても、excerpt表示のread moreは(続きを読む)と変更されますが、full contentとmore-linkで表示しているものは、(さらに・・・)としか表示されないということです。1番目の引数が、空だった場合は、(more…) として、日本語では、(続きを読む…)に変換されます。
と書いていましたが、間違いでした。
coreのja.poでは、
(more…) (さらに…) #: wp-includes/post-template.php:186 msgid "(more…)" msgstr "(さらに…)"
になっていました。
なので、コアの翻訳ファイルは、正常に動作していると思います。
nobitaさん、ありがとうございます。
今、確認しました。本当にありがとうございます。ということは、海外版のテーマを使用していても、テーマの作者が該当部分については、ワードプレス本体のpost-template.phpを利用していて、その結果、coreの翻訳ファイルが適用されて日本語の(さらに…)が適用されているという理解で良いでしょうか。
この場合、(さらに…)の文字を変えようと思うと、ワードプレス本体のja.poを変更しなければいけないわけですよね。
原因がわかったので、自分でワードプレス本体のja.poを変更することで対応するか、作者がなにか対応してくれるか、どちらが良いのかわかりませんので、作者に相談してみます。
いや、本当に(さらに…)がどこからやってきたのかわかってすっきりしました。ありがとうございました。
ということは、海外版のテーマを使用していても、テーマの作者が該当部分については、ワードプレス本体のpost-template.phpを利用していて、その結果、coreの翻訳ファイルが適用されて日本語の(さらに…)が適用されているという理解で良いでしょうか。
「ワードプレス本体のpost-template.phpを利用していて」本体のテンプレート(?)は使われません。
テーマのテンプレートのthe_content()関数の第一引数に何にも入っていないので、the_content()の内部で使われている、get_the_content()関数が、緊急避難的に、代替文字列を引き当て、それが翻訳されたということになると思います。
この場合、(さらに…)の文字を変えようと思うと、ワードプレス本体のja.poを変更しなければいけないわけですよね。
コアの翻訳は、アップデートのたびに更新されるので、その点注意してください。
なので、テーマの制作者が、the_contentの引数に、__()を使った文字列を書いてくれるという事で、翻訳が可能になります。
テーマの制作者がどう判断するかわかりませんが、時間がかかるようなら、
その場合は、その関数が使われているテンプレートを、チャイルドテーマにコピーして、load_child_theme_textdomain()で、チャイルドテーマでの翻訳を可能にするとかしておけば、制作者の体制が整ったときに、翻訳をマージできるようになるかもしれません(やった事はないですが)
- トピック「海外版テーマで自動でread moreが(・・・さらに)と表示されるのを別の日」には新たに返信することはできません。