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

といった形です。

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


以上です。

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

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


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

関連記事

サーバーを圧迫する画像を圧縮するプラグイン「Compress JPEG & PNG images」が神ってる件について
こんにちは。管理人です。 私のようなドケチな人にとっては、サーバー代やドメイン代でさえもったいないと感じます。 (そのせいでアドセンスの認証
【コピペ可】非プラグイン依存!カスタムフィールド出力の統一した書き方
私が知っているメジャーなカスタムフィールド系プラグインは以下の3つです。 Advanced Custom FieldsSmart Custo
特定のユーザーでログインすると特定のテーマで表示されるプラグインをAIに作ってもらった
近頃、Chat GPT なるものが話題ですが、私もChat AI 的なサブスクリプションサービスを契約してみました。 お題目にもある通り、そ
【ページネーション】WP-PageNaviをアーカイブページで表示させる方法
こんにちは。 管理人です。 かなり前から問題だったんですが、記事一覧ページ、アーカイブページ(archive.php)で下のようなページネー
【WordPress】「外観」に「ウィジェット」の項目が表示されないときの対処法
とりあえず後述のソースを functions.php に追記すれば出てきた。 <?php と ?>は必要に応じて消していただいて
【WordPress】ネットいらず?!ローカルでワードプレスを動かしてオリジナルテーマをカスタマイズする方法
XAMPとかMAMP以外にWordPressをローカル環境でカスタマイズできたらいいのになぁーと思って何となく検索してみたら余裕で見つかった



コメントを残す

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