inc2734 / smart-custom-fields

78 stars 33 forks source link

ブロックパターンプラグイン利用時に、新規投稿の際フィールド入力欄が表示されない #84

Open lunaluna opened 3 years ago

lunaluna commented 3 years ago

いつもありがとうございます。

ブロックパターンプラグインをインストールし、なにかしらパターンを登録した状態で SCF を関連づけた投稿(カスタム投稿タイプでも同様)を新規作成すると、新規作成画面では SCF の入力フィールドが表示されず、下書き保存・公開などを一度でもすると表示されます。 こちらで確認した限りでは、上記条件に合致すると投稿・固定ページ・カスタム投稿タイプ問わず新規での記事作成画面では必ず表示されないようです。

操作動画リンク先 https://www.dropbox.com/s/0ys4ua4m6n4q09h/smart-custom-fields.mp4?dl=0

【WordPress5.3.3 + Twentytwenty】
・Smart Custom Fields 4.1.5

・Custom Block Patterns 1.0.1
・VK Block Patterns 0.3.1
両方で確認

投稿タイプ
・投稿
・固定ページ
・カスタム投稿タイプ
いずれでも表示されず

お手すきの際にご確認いただけますと幸いです。

※ 投稿や固定ページだけでなく「Custom Block Patterns」で作成される投稿タイプ「ブロックパターン(loos-cbp)」(「VK Block Patterns」で作成される投稿タイプ「VKブロックパターン(vk-block-patterns)」でも同様)にも SCF で作成したカスタムフィールドを関連づけると、それぞれの投稿画面含めすべての新規作成画面で表示されるようになるようです。

naokoOtaguro commented 2 years ago

同様の事象に突き当たっています。 ソースコードを確認した結果、以下の内容が確認できました。 if文をコメントアウトしたら動きますが、副作用が分からないためあまりよろしくないなとも思っています。。。

smart-custom-fields.php 135行目

        // その他の新規作成・編集画面
        if ( in_array( $screen->id, get_post_types(), true ) ) {
            $post_id = $this->get_post_id_in_admin();
            // どうやら新規作成の場合ここでIDが存在しないためWP_POSTクラスが作成できない
            // 結果、SCF::get_settingsが動作しない
            if ( SCF::get_settings( SCF::generate_post_object( $post_id, $screen->id ) ) ) {
                require_once plugin_dir_path( __FILE__ ) . 'classes/controller/class.controller-base.php';
                require_once plugin_dir_path( __FILE__ ) . 'classes/controller/class.editor.php';
                new Smart_Custom_Fields_Revisions();
                new Smart_Custom_Fields_Controller_Editor();
            }
            return;
        }