WordPressのマルチサイトを用いた多言語子サイトにおける抜粋長さ設定

主題
WordPressで、マルチサイトを用いて多言語の子サイトを運用している場合に、PHPで、抜粋長さを調節する方法について述べる。

背景
筆者は、WordPressで、マルチサイトを用いて多言語の子サイトを運用(と言っても、2言語だが…。)している。そこで、英語版の記事のみ、抜粋が効かない問題に遭遇し、困惑した。
抜粋自体はサイトカスタマイズ -> 設定に抜粋の長さという設定項目があり、これを調節すれば良い事が分かったが、言語の数、すなわち子サイトの数が増えたら大変だと思い、PHPによる調節を考えるに至った。

抜粋長さの設定

前提条件

  • WordPressで、マルチサイトを用いて多言語の子サイトを運用していること。

  • 上記子サイトにおいて、正しくサイトの言語を設定してあること。(ダッシュボード -> 一般設定にある)

    サイト言語の設定(日)


    サイト言語の設定(英)

PHP内容
子テーマのfunctions.phpに記述する内容は、以下の通り。

        <?php

            /**
            * 現在のロケールを取得
            */
            $locale = get_locale();

            /** 
            * 言語コードにより、抜粋長さを変更 
            */
            function custom_excerpt_length( $length ) {

                global $locale;
                
                if ($locale == 'ja'){

                    return 110; /* この数字で日本語版の抜粋長さが変わる。 */

                } else {

                    return 30; /* この数字でその他の版の抜粋長さが変わる。 */
                }
            }	
            add_filter( 'excerpt_length', 'custom_excerpt_length', 999 );

        ?>
    

上記スクリプトにおいて、

  • 11行目のcustom_excerpt_length関数の基本形は、こちらから引用した。

  • 13行目のglobal $locale;宣言は、$localeをもう一つの関数でも共有するために行った。

  • 15~22行目のif〜elseブロックの分岐を増やせば、より多くの言語に対応できる。

以上。

この投稿へのコメント

コメントはありません。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

この投稿へのトラックバック

トラックバックはありません。

トラックバック URL