初心者webデザイナー・コーダーのための備忘録|Tech Stock 【テックストック】

Switch language

当Webサイトのコンテンツ内にはアフィリエイト広告、Googleアドセンス広告が含まれます。
広告主によって不適切な広告が表示されていることに気付いた方は、お手数でございますが該当の広告の「×」を押していただき、「この広告の表示を停止」し所定の流れに従ってください。

Custom Field Suite と Duplicate Post を併用すると起きるバグの解決方法

> WordPress

Custom Field Suite(CFS)Duplicate Post(DP)を併用すると、記事を複製したときに、記事編集画面では何も入力されていないのに表示側では出力されている、というバグが発生します。

データベースがバグってしまうんですね。

これを解消するためのコードがこちらです。

バグ解消のコード(functions.php)

【functions.php】
// ---------------------------------------------- 「Custom Field Suite」と「Duplicate Post」を併用したときのバグ解消
function update_customfield( $post_id, $post) {
	$types = get_post_types(array( 'public'  => true, '_builtin' => false ));
	if (!in_array($post->post_type, $types) || $post->post_status == 'auto-draft')
	return;
	$field_data = CFS()->get( false, $post_id, array( 'format' => 'raw' ) );
	if ( is_array( $field_data ) ) {
		foreach ( $field_data as $key => $value ) {
			delete_post_meta( $post_id, $key );
		}
	}
	$post_data = array( 'ID' => $post_id );
	CFS()->save( $field_data, $post_data );
	return;
}
add_action( 'save_post', 'update_customfield',10,2);

参考記事

https://www.web-labs.info/?p=9


しかし、上記コードでも解決しない問題がありました。

それは、CFS で「ループ(複製フィールド)」を使用したときです。


ループ(複製フィールド)を使うと起きるバグの解消方法

この解決方法はコードを使わずに解決できます。

CFSのループフィールドの中身のフィールドのキー名をDPの「複製しないカスタムフィールド」に入力しておく、という方法です。


例えば、このようなフィールド(入力欄)を作成したとします。

見えにくいですね。

こんな感じですね。


この「loop」フィールドの中身、つまり

  • sample_loop_text
  • sample_loop_textarea
  • sample_loop_file

の3つを、DPの設定画面にある「複製しないカスタムフィールド」に入力しておくのです。


DPの設定画面にある「複製しないカスタムフィールド」の場所はこちらです。

WP管理画面の「設定」>「Duplicate Post」> 複製元タブの「複製しないカスタムフィールド」



入力する値が複数ある場合は正規表現っぽい入力方法が使えるみたいです。
なので、今回の例ではこのように入力できます。

sample_loop*

よく分からない方や1つずつ入力した方が安心だと思う方は、「,(カンマ)」で区切って入力することも可能です。

sample_loop_text,sample_loop_textarea,sample_loop_file

といった形です。

入力し終わったら忘れずに「変更を保存」を押して保存しましょう。


以上です。

これで記事を複製しても正常に複製されるようになります。

まぁ、「正常に」複製できるようになっても、「複製しない」ということができないのですが、、、


それはまた別のお話。。。

関連記事

【WordPress】必ず入れるプラグインと設定【随時更新】
こんにちは。TechStock管理人です。 今回は、Wordpressでwebサイトを作る際に必ずと言っていいほど導入する、プラグインを紹介
【コピペ可】非プラグイン依存!カスタムフィールド出力の統一した書き方
私が知っているメジャーなカスタムフィールド系プラグインは以下の3つです。 Advanced Custom FieldsSmart Custo
Breadcrumb NavXTでカテゴリーのURLに「?post_type=○○○○」が付く問題の対策
こんにちは。管理人です。 今回は、Wordpress管理者ご用達のパンくずリストプラグイン「Breadcrumb NavXT」を使った時にカ
WordPressで開発環境を構築する方法
今回はWeb制作の現場では、どのようにWordPressの開発環境を構築しているのかをお伝えしようと思います。 すでに公開しているWordP
【ページネーション】WP-PageNaviをアーカイブページで表示させる方法
こんにちは。 管理人です。 かなり前から問題だったんですが、記事一覧ページ、アーカイブページ(archive.php)で下のようなページネー
特定のユーザーでログインすると特定のテーマで表示されるプラグインをAIに作ってもらった
近頃、Chat GPT なるものが話題ですが、私もChat AI 的なサブスクリプションサービスを契約してみました。 お題目にもある通り、そ



コメントを残す

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