41182


WORDPRESSのadvanced custom fieldでカスタム投稿の入力フォームを作成しています。  
１度保存すると、投稿IDが付与されるのですが、その投稿IDを管理画面の投稿入力の画面で、カスタムフィールド内に表示させることはできないでしょうか？

例えば、「投稿ID」（タイプ：テキスト）というフィールドを作成しておいて、投稿画面を作ります。  
投稿者が、新規投稿を作成して保存後、次に開いたときには、その中に投稿IDが自動表示されているような形を希望しています。

編集画面のURLを見たら、投稿IDは見れるのですが、できれば、画面内に表示させたいです。


CC BY-SA 3.0
2018-01-24T08:50:12.727
41178
2018-01-25T10:17:20.763
26572
question
wordpress
wordpressのカスタムフィールド へ投稿IDを出力させたい


フィールド名:'post2id'を作成して置き、テーマのfunctions.phpに以下のコード追加

**動作の説明**  
新規作成時に呼ばれるアクションフック 'admin_head-post-new.php'で  
post_type が 'post'の時に $post->IDの値を、フィールド名:'post2id'へ保存します。  
また、不用意に追加しないようにupdate_post_metaで上書きしています。

[code]

    function add_meta_id() {
        global $post;
        if($post->post_type === 'post'){
            if(!update_post_meta( $post->ID, 'post2id', $post->ID )){
                add_post_meta($post->ID, "post2id", $post->ID);
            }
        }
    }
    add_action( 'admin_head-post-new.php', 'add_meta_id' );
    
[/code]

**本当に、必要なのか精査して使って下さい。**  
カスタムフィールド名、post typeは適時変更してください。


CC BY-SA 3.0
2018-01-24T10:36:19.137
41182
2018-01-24T10:56:35.700
2018-01-24T10:56:35.700
22793
22793
41178
answer


コメントを読む限り、編集ページ内にメタボックスを出したいだけのようなのでわざわざ無駄なカスタムフィールドが必要とは思えません。(ほんとうに必要なのかってそういう意味では？)

単純に投稿IDを表示するメタボックスを設置するだけであれば例えば以下のような単純なコードを追加するだけで完結します。

[code]

    add_action( 'add_meta_boxes', function () {
        add_meta_box( 'example-post-id', '投稿ID', function ( WP_Post $post ) {
            printf( '<input type="text" disabled="disabled" value="%d" >', $post->ID );
        } );
    }, 'post' );
    
[/code]

[![](https://i.stack.imgur.com/C0Qyq.png)](https://i.stack.imgur.com/C0Qyq.png)


CC BY-SA 3.0
2018-01-25T10:17:20.763
41206
2018-01-25T10:17:20.763
2376
41178
answer