[WordPress]カスタムフィールドの値を全部取得してみる覚書

JSON-LDをWordPressで出力するプラグインを作成中なのですが、カスタムフィールド情報を全件取る必要が出てきたのでいろいろ試してみました。 カスタムフィールドの値を取得する カスタムフィールドの値はget_po […]

広告ここから
広告ここまで

目次

    JSON-LDをWordPressで出力するプラグインを作成中なのですが、カスタムフィールド情報を全件取る必要が出てきたのでいろいろ試してみました。

    カスタムフィールドの値を取得する

    カスタムフィールドの値はget_post_meta関数で取得できる。

    「$post_id, $key, $single」の3つの引数がありますが、$post_idのみ渡すとその投稿にあるカスタムフィールドを全部取得することができます。

    [php]
    $custom = get_post_meta( $post_id);
    [/php]
    関数リファレンス/get post meta – WordPress Codex 日本語版

    システム用のデータを排除する

    これで全件取得が完了したかと思ったのですが、そういう時はだいたい落とし穴があるものですorz

    取得したデータを見ると「’name’」と「’name’」のように(アンダーバー)付きの配列も混ざってます。

    これはWordPressがシステム側で使うものらしいので、取得しないようにしたいと思います。

    どうやらシステム側で使うものには「_」の接頭詞が付く様子なので、それをキーに処理すると良さ気でした。
    [php]
    $customAll = get_post_meta($post_id);
    foreach($customAll as $key => $value){
    if(substr($key,0,1) !== ‘_’){
    $custom[$key] = $value;
    }
    }
    [/php]

    なーんとなくforeachよりもスマートな方法がある気がしますが、100件も500件も処理するわけではないのでとりあえず今回はこれで・・・

    array系の関数で多分もっといいのありますよね?

    オシエテエロイヒト

    広告ここから
    広告ここまで
    Home
    Search
    Bookmark