大変初歩的な質問で申し訳ございません。
WordPressのfunctions.php内、自作のフィルターフックにおいて、
2、3日以下の課題に取り組んでいますが、全くクリアされないため、
ご質問を失礼いたします。
①カスタム投稿にて記事を新規投稿時、
②カスタム投稿画面に設置しているカスタムフィールド
(functions.phpへコードを書いて設置したもの)に、
③生成した乱数を自動入力させておく
カスタム投稿の新規投稿画面に進みますが、
カスタムフィールドが空欄のまま、乱数が自動入力されていません。
※エラーはなく、phpファイルの保存自体は成功し、サイトも正常表示されます。
【ソースコード】
/**
* 乱数パスワード生成(カスタムフィールドに)
**/
add_filter('wp_insert_post_data','SetPwd', 10, 3);
function SetPwd($data, $postarr){
$pass = makeRandPwd($length);
if($data["post_type"] === "goods_info"){
$value = get_post_meta( get_the_ID(), 'password', true );
if($value == ""){
update_post_meta($postid, 'password', $pass);
}
}
return $data;
}
function makeRandPwd($length) {
$length = 16;
$str = array_merge(range('a', 'z'), range('0', '9'), range('A', 'Z'));
$r_str = null;
for ($i = 0; $i < $length; $i++) {
$r_str .= $str[rand(0, count($str))];
}
return $r_str;
}
フィルターフックの設定や、ユーザー定義関数の記述方式など、
書籍(「WordPressユーザーのためのPHP入門」)やWordPress Codexを参照したり、
簡単なコーディングにて、投稿タイプやカスタムフィールドの取得、ユーザー定義関数が
正常に動作することを確認いたしました。
また、上記ソースコードを保存時、エラーメッセージは出ておらず、
サイトも正常に表示されます。
上記ソースコードに至るまで、何回か新規にコーディングし直したり、
Codexを参照し、関数やフィルターフックの使用方法が適正かどうか、
Web検索でのコーディング紹介サイトの参照、書籍での基本的知識の獲得などに基づき、
正規の記述方式を守ったつもりではございますが、
これ以上は、どこが根本的に誤っているのか、主観的に冷静な精査ができかねます為、
恥を忍んでこちらにご質問させていただきました。
主観と致しましては、
add_filter('wp_insert_post_data','SetPwd', 10, 3);
function SetPwd($data, $postarr){
$pass = makeRandPwd($length);
if($data["post_type"] === "goods_info"){
$value = get_post_meta( get_the_ID(), 'password', true );
if($value == ""){
update_post_meta($postid, 'password', $pass);
}
}
return $data;
}
こちらの関数の記述内容において、
$data["post_type"]
の記述ミスでカスタム投稿タイプが指定できていない'wp_insert_post_data'
のフィルターフックが記述ミスで掛かっていないadd_filter
での、渡す変数の個数が間違っている第三者の方の視点から、どの箇所に誤りがあるのかご指摘いただけますと幸いです。
お手数ではございますが、以上、何卒宜しくお願いいたします。
#wordpress