web-dev-qa-db-ja.com

投稿の種類、カテゴリ、分類法によるフロントエンドからの投稿

私は今、ディレクトリのようなものになるワードプレスサイトを開発しています。人々はチュートリアル、上級レビュー、そしてゲームのチートコードを提出することができます。ページごとに異なるフォームを作成することにしましたが、今度はドロップダウンのあるフォームを1つだけ使用することにしました。

私が見つけることができる、そこに良いプラグインがあるようには思われません、それはそれぞれの投稿が「保留中の投稿」としてだけでなく特定の投稿タイプとしてプッシュスルーされる必要があるという事実を受け入れます。

たとえば、使用するフォームは次のように設定されます。

Game name: <post title>
Platform:  <Taxonomy>
Category:  <Category> (role playing, FPS, adventure, etc..)
This is a: () Review () Tutorial () Cheat list  <this is the post type>
Content: <post body>
Tags: <tags>
[Submit]

投稿時に、レビュー、チート、またはチュートリアルをラジオボックスから選択した投稿タイプで保留中の投稿として設定する必要があります。

私は現在WP User Front Endを使用していますが、おそらく最も簡単な修正方法として推奨されているフロントエンドフォームからの投稿を使用できます。フォームに新しいフィールドを追加するのは簡単です、それらに何かをさせるのは難しいです!私はこれで得ることができるどんな助けでも感謝するでしょう、私たちのウェブサイトはこれらの特徴のまわりで回転します。

1
Lynne

これは 重力フォーム でできるようです。私はちょうどサポートフォーラムでクイックサーチをして、これを見つけました、あなたとほとんど同じ質問をする誰かへの答え:

重力フォームを使用して、カスタムの分類法およびカスタムの分類法を作成できますが、そのまま使用することはできません。重力フォームにデフォルトの代わりにカスタム投稿タイプまたはカスタム分類法を使用するように指示するには、利用可能なフックを使用する必要があります。デフォルトでは標準のWordPress投稿、カテゴリ、タグを使用します。

そのため可能ですが、カスタムコードが必要です。これを実装する準備ができたら、多くの人がこれを行ったようにフォーラムでコード例を検索するか、または何をしようとしているかを説明する新しい投稿を投稿して支援を求めます始めましょう。

カスタム投稿タイプを作成し、カスタム分類法を使用することをより簡単にするアドオンを将来作成する予定です。

4

フロントエンドから投稿を送信できるようにする無料のプラグインがいくつかあります。

そしてよりよい支払われたものは次のようになります。

しかし、それらのどれもがあなたのニーズに合わせたカスタムコーディングとしての柔軟性をあなたに与えないでしょう、そして実際にフロントエンドからの投稿はフォームを表示しそれを処理することの問題です。

<!-- New game Post Form -->
<div id="postbox">
<form id="new_post" name="new_post" method="post" action="">

<!-- game name -->
<p><label for="title">Game name</label><br />
<input type="text" id="title" value="" tabindex="1" size="20" name="title" />
</p>

<!-- game platform assuming that the taxonomy is named platform -->
<p><label for="Platform">Platform:</label><br />
<p><?php wp_dropdown_categories( 'show_option_none=Platform&tab_index=4&taxonomy=platform' ); ?></p>

<!-- game Category -->
<p><label for="Category">Category:</label><br />
<p><?php wp_dropdown_categories( 'show_option_none=Category&tab_index=4&taxonomy=category' ); ?></p>

<!-- game post type assuming that the post types are named: review,tutorial,cheat_list-->
<p><label for="post_type">This is a:</label><br />
<p><select name="post_type" id="post_type">
    <option value="review">Review</option>
    <option value="tutorial">Tutorial</option>
    <option value="cheat_list"> Cheat list</option>
</select></p>

<!-- game Content -->
<p><label for="description">Content</label><br />
<textarea id="description" tabindex="3" name="description" cols="50" rows="6"></textarea>
</p>

<!-- game tags -->
<p><label for="post_tags">Tags:</label>
<input type="text" value="" tabindex="5" size="16" name="post_tags" id="post_tags" /></p>
<p align="right"><input type="submit" value="Publish" tabindex="6" id="submit" name="submit" /></p>

<input type="hidden" name="action" value="new_game_post" />
<?php wp_nonce_field( 'new-post' ); ?>
</form>
</div>

そしてあなたのフォーム処理は次のようになります。

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

    // Do some minor form validation to make sure there is content
    if (isset ($_POST['title'])) {
        $title =  $_POST['title'];
    } else {
        echo 'Please enter a game  title';
    }
    if (isset ($_POST['description'])) {
        $description = $_POST['description'];
    } else {
        echo 'Please enter the content';
    }
    $tags = $_POST['post_tags'];

    // Add the content of the form to $post as an array
    $new_post = array(
        'post_title'    => $title,
        'post_content'  => $description,
        'post_category' => array($_POST['cat']),  // Usable for custom taxonomies too
        'tags_input'    => array($tags),
        'post_status'   => 'publish',           // Choose: publish, preview, future, draft, etc.
        'post_type' => $_POST['post_type']  // Use a custom post type if you want to
    );
    //save the new post
    $pid = wp_insert_post($new_post); 
    //insert taxonomies
    wp_set_post_terms($pid,array($_POST['Platform']),'platform',true);
}

それは完璧ではありませんが、それは始まりであり、あなたはアイデアを得るべきです。

お役に立てれば

4
Bainternet