大変初歩的な質問で申し訳ございません。

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を参照したり、

簡単なコーディングにて、投稿タイプやカスタムフィールドの取得、ユーザー定義関数が

正常に動作することを確認いたしました。

また、上記ソースコードを保存時、エラーメッセージは出ておらず、

サイトも正常に表示されます。

補足情報(FW/ツールのバージョンなど)

  • 使用サーバー : Xserver
  • PHP version : PHP7.3.16
  • WordPress version : WordPress 5.4.1

上記ソースコードに至るまで、何回か新規にコーディングし直したり、

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

カスタム投稿タイプ内カスタムフィールドに、ユーザー定義関数で生成した乱数を自動入力したいです。|teratail
1.50 GEEK