カスタムフィールドを使用してプログラムで投稿(カスタム投稿タイプ)を公開する


17

多くのカスタムフィールドを持つカスタム投稿タイプ「参加者」があります。ユーザーが入力するための対応する入力フィールドを持つフォームもあります。彼がフォームを送信するときに、ユーザーが選択した値を含む各カスタムフィールドを使用して新しい投稿を生成する必要があります。

行うことは可能ですか?

回答:


29

次のようにwp_insert_post()およびadd_post_meta()を使用します。

// insert the post and set the category
$post_id = wp_insert_post(array (
    'post_type' => 'your_post_type',
    'post_title' => $your_title,
    'post_content' => $your_content,
    'post_status' => 'publish',
    'comment_status' => 'closed',   // if you prefer
    'ping_status' => 'closed',      // if you prefer
));

if ($post_id) {
    // insert post meta
    add_post_meta($post_id, '_your_custom_1', $custom1);
    add_post_meta($post_id, '_your_custom_2', $custom2);
    add_post_meta($post_id, '_your_custom_3', $custom3);
}

WordPress 4.4.2でも魅力的です:)!
jave.web

最近では、wp_insert_postのmeta_inputキーを使用してメタファイルを簡単に追加できます。– 'meta_input' => ['_your_custom_1' => $custom1, '_your_custom_2' => custom2]
アンドレアス

@Andreasの良い点は、それを新しい回答として追加し、投票を開始できるようにすることです。今すぐ答えになるはずです。
ウェブウェア

Thx @webaware :)
アンドレアス

WordPress 5.1でも魅力的です:)!
私は最も愚かな人です

6

上記の@webaware素晴らしい答えに加えて、これはwordpress 4.4.0以降、すべてwp_insert_postを介して処理できます。呼び出し。

$post_id = wp_insert_post(array (
    'post_content' => $content,
    'post_title' => $title,
    'post_type' => 'your_custom_post_type',
    'post_status' => 'publish',

    // some simple key / value array
    'meta_input' => array(
        'your_custom_key1' => 'your_custom_value1',
        'your_custom_key2' => 'your_custom_value2'
        // and so on ;)
    )
));

if ($post_id) {
    // it worked :)
}

4

これは、Gravity Formsプラグインを使用して非常に簡単に実現できます。バックエンドでカスタム投稿タイプを入力するフォームを構築できます。この投稿は、下書きまたは公開済みとして表示するように設定できます。カスタムフィールドを追加しても問題ありません。私の場合、クライアントの声を集めるためにそれを使用しました。


特に、フォームを自分で管理したいクライアントに配信する場合は、このソリューションが気に入っています。
webaware
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.