初心者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

といった形です。

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


以上です。

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

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


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

関連記事

特定のユーザーでログインすると特定のテーマで表示されるプラグインをAIに作ってもらった
近頃、Chat GPT なるものが話題ですが、私もChat AI 的なサブスクリプションサービスを契約してみました。 お題目にもある通り、そ
Smart Custom Fields愛用者が常用する全カスタムフィールド出力方法
私の仕事柄、WordPressでサイトを1からカスタマイズして作ったりリニューアルのメンテナンスやカスタマイズ仕直しの業務が多々あり、毎回非
旧ドメインから新ドメインに移行するときに注意したこと|wordpressの移行手順
【WordPressプラグイン】カテゴリーにサムネイルを反映する「Taxonomy Thumbnail」使ってみた(タグ・カスタムタクソノミーにも使えるらしい)
どうも。当サイトとは別に収益性の高いサイトを作ろうと奮闘中の管理人「x」です(笑) 今回はカテゴリー一覧を表示させるときに、各カテゴリーごと
【WordPress】必ず入れるプラグインと設定【随時更新】
こんにちは。TechStock管理人です。 今回は、Wordpressでwebサイトを作る際に必ずと言っていいほど導入する、プラグインを紹介
【ページネーション】WP-PageNaviをアーカイブページで表示させる方法
こんにちは。 管理人です。 かなり前から問題だったんですが、記事一覧ページ、アーカイブページ(archive.php)で下のようなページネー



コメントを残す

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