最近お気に入りのWordpressのテーマに、Minimal Xpert というのがある。ちょっと前から Cimbalom World Association のサイトで使っていたのだが、日本語では、excerpts がうまくいかないなどの課題があって、自分のサイトに適用するのをためらっていた。今日ちょっと時間をとって直してみたので、備忘録としてインストール記録をば。
まずは普通にインストールと設定:
- Minimal Xpert をMinimal Xpertサイトからダウンロードしてきて、/wp-content/themes/ に展開。
- ダッシュボード>外観>テーマ (/wp-admin/themes.php)で、Minimal Xpert を有効化。
- ウィジェットを設定。
- メニューを設定。(ちなみにこのメニューとは、サイトタイトルの直下に現れるメニューバーのこと。 )”Menu”という名前のメニューを足して、そこに左側のpaneから適宜項目を足す。その上で、「テーマの場所」の「Main Nav」プルダウンで「Menu」を選択。
- 「外観」の上に「Slides」が出ているので、そこでSlidesを追加。画像は「アイキャッチ画像」として追加のこと。ここで設定したスライドタイトルが、実際のスライドのキャプションとして使われる。
- 左メニューの下の方に「MX Settings」というメニューがあるのでこれを開き、適宜設定。スライドのトランジションはここで一回設定して「Save Options」しないと反映されない。
英語だったらこれでお終いなのだが、このままだとトップページ他の自動要約がうまく働かない。英語だと、冒頭から50単語を抜き出してそれ以上は「Read More…」してくれるのだが、日本語だとだらだらと、下手をすると全文出てしまう。これは、「単語」を「スペース」で区切って判別しているからだ。これだと、日本語だと下手をすると50段落になってしまう。
さて、この抜き出しをしているのは minimal-xpert/functions/better-excerpts.php というファイルだ。これを改造する。
まず、11行目で ‘ ‘ で文を単語に分割して、12行目で単語数を数えるということをやっているが、日本語の場合これは意味が無い。文字数ベースでやるべきなので、これをコメントアウトして、全体の文字数を $tot = strlen($text) して取得する。
さらに、14行目で、出力「$output」を、for ループを $words 数回して作っているが、これも意味が無いのでコメントアウト。そのかわり、$words を文字数と考えて、mb_substr($text,0,$words) してやって作る。
以下は diff の結果。
11,12c11,13 < $text = explode(' ', $text); < $tot = count($text); --- > // $text = explode(' ', $text); > // $tot = count($text); > $tot = strlen($text); 14c15,16 < for ( $i=0; $i<$words; $i++ ) : $output .= $text[$i] . ' '; endfor; --- > // for ( $i=0; $i<$words; $i++ ) : $output .= $text[$i] . ' '; endfor; > $output.=mb_substr($text,0,$words);
さらに、minimal-xpert/post-entry.php を編集する。英語の場合は50単語で切っていたが、日本語では140文字できることにする。修正は2ヶ所。以下は diff の結果。
13c13 < <?php the_news_excerpt('50','','','plain','no'); ?> --- > <?php the_news_excerpt('140','','','plain','no'); ?> 19c19 < <?php the_news_excerpt('50','','','plain','no'); ?>. --- > <?php the_news_excerpt('140','','','plain','no'); ?>.
これでOK。