sola
フォーラムへの返信
-
フォーラム: プラグイン
返信が含まれるトピック: Smart Custom Fields で管理された項目の編集についてTakashi Kitajima 様
お忙しい中返事頂きありがとうございます。
> 実際の更新処理をどういうふうに行われているのかがちょっとわかっていない
REST API ではないですが、 WP Ajax を用いて カスタムフィールド値を JSON にて吐き出し、
それをフロント側で jQuery にて取得しデータとフォームを表示しています。また、データ(行)の編集(追加・更新・削除)を上記同様 WP Ajax を用いて行うコードを作成途中でした。
> プログラム上から、定義したカスタムフィールドに対しデータをポストする時に「何番目のフィールドである」という情報は送信されないのですかね?
現在は未送信ですが、必要であれば処理を追加致します。> Smart Custom Fields が出力するフォームじゃなくて何らかの独自フォームが存在するのかなと思っていたのですが。
こちらについてはおっしゃる通りです。
> $Meta->get(‘repeat-checkbox’)で返ってきた値に対してarray_slice()するとかでどうでしょう?
「何番目のフィールドである」という情報を元に特定の値が得られるかと思いますが、
その値を個別に更新・削除するイメージが湧いておりません。
値を何かしら更新・削除する際は、個別の値の内容の変化の有無に関わらず$Meta->get('repeat-checkbox')
で得られる全ての値を全て同時に更新する必要があるという事でしょうか?フォーラム: プラグイン
返信が含まれるトピック: Smart Custom Fields で管理された項目の編集についてTakashi Kitajima 様
お返事いただき大変ありがとうございます。
SCF_Config::PREFIX . 'repeat-multiple-data'
の中のキーごとの繰り返しの数で比較するとの事ですが、
繰り返しの数で区別し編集(更新・削除)する方法がピンと来ておりません。
見方があれば出来る限りで構いませんので教えて頂けませんでしょうか?時期的にお忙しいかと思いますので、可能な時で構いません。
よろしくお願い致します。- この返信は8年、 3ヶ月前にsolaが編集しました。
フォーラム: プラグイン
返信が含まれるトピック: Smart Custom Fields で管理された項目の編集についてTakashi Kitajima 様
回答ありがとうございます。
> 行を消すときはデータとそのデータの「CF_Config::PREFIX . ‘repeat-multiple-data’」を消せば良いはずです。
こちら承知しました。
ただ、キーと既存値(prev_value)が同一なものを区別し、編集(更新・削除)する方法が分かりかねています。
何度もすいませんが、方法があれば教えて頂けると助かります。よろしくお願い致します。
フォーラム: プラグイン
返信が含まれるトピック: Smart Custom Fields で管理された項目の編集についてTakashi Kitajima 様
再度お返事いただきありがとうございます。
> すみません、「操作ができない」がどういう意味かピンときていません
表現が抽象的で申し訳ありません。
やりたい事ですが、Smart Custom Fields の範囲に留まらず全体的な内容をご説明致します。■フロー
0. WP管理画面よりプラグイン「Custom Post Type Generator」にてカスタム投稿タイプ ‘goods’ を定義し、
WP管理画面より Smart Custom Fields にて投稿タイプ ‘goods’ にて使用するカスタムフィールドを定義
1. プログラム上から wp_insert_post() にてカスタム投稿 ‘goods’ を 1件 追加
2. プログラム上から「1.」の投稿 ‘goods’ 上の Smart Custom Fields にて定義されているカスタムフィールドに対し、情報を追加・更新・削除■補足
a. 情報の追加や更新は全てのカスタムフィールドに対し一斉に行う形ではなく、
個別の繰り返しフィールド項目を増減(追加・削除)したり、既存の個別フィールドに対し値を変更(更新)を考えています。
b. 繰り返しになりますが、 Adovanced Custom Fields にある
update_field()
https://www.advancedcustomfields.com/resources/update_field/
add_row()
https://www.advancedcustomfields.com/resources/add_row/
delete_row()
https://www.advancedcustomfields.com/resources/delete_row/
のような処理を Smart Custom Fields で行いたいと考えております。
c. WP管理画面はサイト上のお客様がどういった情報を投稿されているのか確認したり、
万が一の際の情報のメンテナンスが主な用途であり、
投稿の作成やカスタムフィールド情報の追加や更新、削除は基本プログラム上から全て行うつもりでおります。> サンプルコードか書き込み頂くことはできますか?
上記の説明でも不十分で、かつ必要な理由が分かれば書き込み致しますので、
一度、ご確認頂ければ幸いです。> あと、繰り返しについてはWordPress標準のメタデータの仕組みでは対応できないので、別途管理用のデータを保存しなければいけません。このあたりを参考にしてみてください。
DBテーブル「wp_postmeta」上に”smart-cf-repeat-multiple-data”という meta_key を持つレコードが存在しており、
その値のシリアライズ文字列の作られ方について、おそらく理解する事が出来ました。ありがとうございます。カスタムフィールドの繰り返しフィールドを増やす際は、test-smart-custom-fields-meta.php 298行目のような処理を毎度行う必要がある認識でよろしいでしょうか?
フォーラム: プラグイン
返信が含まれるトピック: Smart Custom Fields で管理された項目の編集についてTakashi Kitajima 様
作者様直々に回答頂きありがとうございます!
$SCFM = new Smart_Custom_Fields_Meta( get_post( $postId ) ); $SCFM->add( 'key', 'value' ); $SCFM->update( 'key', 'value', 'prev_value' ); $SCFM->delete( 'key', 'value' );
上記のようなコードで追加・更新・削除が出来ること確認致しました。
ただ、キーと既存値(prev_value)が同一なものに対する操作ができず困っております。何か別のコードが必要でしょうか?
ご教授頂けるとうれしいです。> 「カスタムフィールドを管理画面ではなくコードで管理(定義)したい」ということでしたら
このような要望ではなく、フィールドの値の管理の事でした。
(記載内容が分かりにくくすいません。)
お気遣いありがとうございます。フォーラム: 使い方全般
返信が含まれるトピック: サブディレクトリ型マルチサイトで設置するブログのディレクトリについフォーラム: 使い方全般
返信が含まれるトピック: Advance Custom Field ハッシュの中の値をSQLで特定したいjim912 さん
初めまして。回答頂きありがとうございます。
良くサイト拝見しております。> 配列をDBに保存される場合に用いられるのは、シリアライズという方法ですね。
すいません…ハッシュは完全な誤用でした。> value は、ユーザーのIDではなく、シリアライズされた一部を指定して下さい。
シリアライズ化されたデータに関する知識が無かったのですが、そのような規則性があったのですね。
大変参考になります。教えて頂いた方法を元に、LIKE 検索してみたいと思います。
(PHPで処理するよりは圧倒的にましなはず…)ありがとうございました!
フォーラム: 使い方全般
返信が含まれるトピック: wp_update_user() を用いてパスワードを変更した際のメール内容変更についてDaisuke Takahashi 様
お返事ありがとうございます。
特別エラーはございませんでした。
また、エンコーディングもUTF-8と規定通りのものでした。wp_update_user() ではなく、wp_set_password() を用いたところ、メールが自動送信されなくなりましたので、その後の処理に wp_mail() を用いる事で、メールの内容を自由に変更する事が出来るようになりました。
ありがとうございました。
フォーラム: 使い方全般
返信が含まれるトピック: wp_update_user() を用いてパスワードを変更した際のメール内容変更についてwp_password_change_notification() という名のプラガブル関数があるとの事なので、
プラグインに以下のようなコードを記載しネットワークで有効化しましたが上手く動作しませんでした。if( !function_exists( 'wp_password_change_notification' ) ): function wp_password_change_notification( &$user ){ if ( 0 !== strcasecmp( $user->user_email, get_option( 'admin_email' ) ) ){ $message = "メール本文\r\n"; wp_mail( get_option( 'admin_email' ), "メール件名", "サイト名", $message ); } } endif;