web-dev-qa-db-ja.com

フロントエンドからカスタム投稿タイプのアイテムを追加する

フロントエンドからportfolio項目を追加できるようにするためのWordpress Webサイトの作成方法を見つけようとしています。 WP-User-Frontendなどのプラグインはフロントエンドからの投稿を許可しますが、ブログ投稿でのみ機能します。

Wp-user-frotendに似ているがカスタム投稿タイプのアイテムを追加できるような方法やプラグインはありますか?

2
Sze Chuan

あなたがそれを支払っても構わないと思っているなら、Gravityフォームプラグインはあなたがあなたのカスタムフィールドにマップするだけでなくあなたのカスタム投稿タイプにマップするフォームを作成することを可能にします。

そうでない人や自分の袖を巻くことを望んでいる人のために、あなたはあなたが選択したどんな種類の投稿にもデータを投稿するフロントエンドフォームを非常に簡単に作成することができます。

これが基本的な例です。

if ( 'POST' == $_SERVER['REQUEST_METHOD'] && !empty( $_POST['action'] ) && $_POST['action'] == "my_post_type") {

//store our post vars into variables for later use
//now would be a good time to run some basic error checking/validation
//to ensure that data for these values have been set
$title     = $_POST['title'];
$content   = $_POST['content'];
$post_type = 'my_custom_post';
$custom_field_1 = $_POST['custom_1'];
$custom_field_2 = $_POST['custom_2'];    

//the array of arguements to be inserted with wp_insert_post
$new_post = array(
'post_title'    => $title,
'post_content'  => $content,
'post_status'   => 'publish',          
'post_type'     => $post_type 
);

//insert the the post into database by passing $new_post to wp_insert_post
//store our post ID in a variable $pid
$pid = wp_insert_post($new_post);

//we now use $pid (post id) to help add out post meta data
add_post_meta($pid, 'meta_key', $custom_field_1, true);
add_post_meta($pid, 'meta_key', $custom_field_2, true);

}

HTMLフォームは次のようになります。

<form method="post" name="front_end" action="" >
<input type="text" name="title" value="My Post Title" />
<input type="text" name="content" value="My Post Content" />
<input type="text" name="custom_1" value="Custom Field 1 Content" />
<input type="text" name="custom_2" value="Custom Field 2 Content" />
<button type="button">Submit</button>
<input type="hidden" name="action" value="my_post_type" />
</form>

これらすべてをあなたのテーマテンプレートファイルに入れることができます。通常、私はそれをさらに一歩進めて、アクションにフックされた私のfunctions.phpの中の関数から処理ロジック(PHP)を実行するでしょう、しかしそれはテーマファイルの中からでもうまくいくでしょう。

これは基本的な例にすぎず、seriousエラーチェックおよび検証を行わないことを意図しています。しかしこれは、フロントエンドからバックエンドの投稿タイプに投稿する必要があるものに不可欠なフレームワークを提供します。

あなたが検索を実行するならばあなたが豊富な情報を見つけるであろうWPSEの主題を拡張する多数のチュートリアルもあります。

9
userabuser
<?php 

if ( 'POST' == $_SERVER['REQUEST_METHOD'] && !empty( $_POST['action'] ) && $_POST['action'] == "front_post") {

//store our post vars into variables for later use
//now would be a good time to run some basic error checking/validation
//to ensure that data for these values have been set
$title     = $_POST['title'];
$content   = $_POST['content'];
$tags   = $_POST['tag'];
$custom_field = $_POST['custom_1']; 
$post_type = 'frontpost';


//the array of arguements to be inserted with wp_insert_post
$new_post = array(
'post_title'    => $title,
'post_content'  => $content,
'tags_input'  => $tags,
'post_status'   => 'publish',
'post_category' => array('0',$_POST['cat']),          
'post_type'     => $post_type 
);

//insert the the post into database by passing $new_post to wp_insert_post
//store our post ID in a variable $pid
//we now use $pid (post id) to help add out post meta data
 $pid=wp_insert_post($new_post);

//we now use $pid (post id) to help add out post meta data
add_post_meta($pid, 'cust_key', $custom_field);


}
?>
    <div class="front-form col-sm-6">
        <form method="post" name="front_end" action="" >
            <input type="text" name="title" placeholder="FrontPost Title" required />
             <textarea  name="content" placeholder="FrontPost Content" rows="5" ></textarea>
            <input type="text" name="tag" placeholder="FrontPost tags" />
            <input type="text" name="custom_1" placeholder="Custom Field  Content" />


            <span><?php wp_dropdown_categories( 'tab_index=10&taxonomy=category&hide_empty=0' ); ?></span>
            <button type="submit">Submit</button>
            <input type="hidden" name="action" value="front_post" />
        </form>
    </div>

これを試してみてくださいそれはあなたを助けます..! Aakib :)

0
Aakib