0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

WordPressのSmart Custom Fieldsが、多言語サイト作成プラグインBogoで翻訳した固定ページに設定できない件の対策

Posted at

WordPressの便利なプラグインである、
非常に直感的に多言語サイトが作れる多言語化プラグイン「Bogo」と、
設定したカスタムフィールドを必要に応じて繰り返し使える機能が無料で使える
カスタムフィールド作成プラグイン「Smart Custom Fields」ですが、
併用した場合に、固定ページを複製した翻訳ページへは、
管理画面からSmart Custom Fieldsで設定したカスタムフィールドを設定することができません。
(※カスタム投稿タイプ、および通常の投稿ページの翻訳ページには、元の投稿に設定されたカスタムフィールドがそのまま反映されます)

固定ページを作成

スクリーンショット 2024-09-11 23.17.47.png

Smart Custom Fieldsでカスタムフィールドを作成、固定ページへ設定

投稿/固定ページのIDの候補に作成した固定ページが表示される

スクリーンショット 2024-09-11 23.17.15.png

固定ページに設定したカスタムフィールドが表示される

スクリーンショット 2024-09-11 23.40.25.png

固定ページを複製

Bogoの機能で「言語」タブが追加されている
「英語の翻訳を作成」をクリック

スクリーンショット 2024-09-11 23.21.10.png

複製された翻訳の固定ページに、カスタムフィールドがない

スクリーンショット 2024-09-11 23.21.30.png

Smart Custom Fieldsの設定候補に出てこない

スクリーンショット 2024-09-11 23.20.18.png

対策

管理画面での設定をあきらめ、functions.phpでの設定を行います。
翻訳ページの投稿IDを直接指定して、カスタムフィールドを表示するようにします。
functions.phpでの設定方法については、Smart Custom Fieldsのプラグインページの他、以下のURLが参考になります。
https://qiita.com/yousan/items/7cbd56308ecc0e2bb263
 
まずは翻訳ページの投稿IDを取得します。
翻訳ページの編集画面を開き、そのページのURLを見ると投稿IDがわかります。
(?post=〇〇の部分)
スクリーンショット 2024-09-16 22.57.59.png
 
functions.phpでの設定例は以下の通り。

functions.php
/**
 * カスタムフィールドを定義
 * 
 * @param  array  $settings  Smart_Custom_Fields_Setting オブジェクトの配列
 * @param  string $type      投稿タイプ or ロール
 * @param  int    $id        投稿ID or ユーザーID
 * @param  string $meta_type post | user
 * @return array
 */
function my_register_fields($settings, $type, $id, $meta_type)
{
    // $idが翻訳元ページ(id=7)、もしくは翻訳ページ(id=15)のときに表示するカスタムフィールド
    if ($id == 7 || $id == 15) {
        $setting = SCF::add_setting('id-test1', 'テスト用フィールド');

        $items = array(
            array(
                'name'  => 'textfield',
                'label' => 'テスト',
                'type'  => 'text'
            ),
        );

        $setting->add_group('group-test1', false, $items);
        $settings[] = $setting;
    }

	return $settings;
}
add_filter('smart-cf-register-fields', 'my_register_fields', 10, 4);

 

設定後の翻訳元ページ

スクリーンショット 2024-09-16 23.12.04.png

設定後の翻訳ページ

スクリーンショット 2024-09-16 23.12.33.png

翻訳ページにも設定したカスタムフィールドが表示された

 
翻訳元の投稿IDも同時に指定すれば管理が楽になります。
また、独自テンプレートを作成している場合は、
functions.phpでの指定にすることでGit等でも管理できるので開発上便利ですね。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?