我正在尝试创建一个简单的前端表单张贴

时间:2011-04-21 作者:EnexoOnoma

我试图用Wordpress学习和创造一些更深层次的东西。我的目标是创建一个代码/脚本/插件,允许我从前端发布。

我见过很多插件,比如templatic classifieds theme,它们从前端提交、处理和编辑帖子,但对于我来说,这些插件非常复杂,代码无用。

我想更清楚地了解如何获取ID,如何设置标题、内容和自定义字段。

一旦我完成了这个,我想根据user\\u meta来研究它。

感谢您的示例、代码、想法和链接!

1 个回复
最合适的回答,由SO网友:Bainternet 整理而成

要从前端发布,可以使用wp_insert_post() 作用

所以这只是一个表单和处理它的问题

表格:

 <!-- New Post Form -->
<div id="postbox">
<form id="new_post" name="new_post" method="post" action="">
<p><label for="title">Title</label><br />
<input type="text" id="title" value="" tabindex="1" size="20" name="title" />
</p>
<p><label for="description">Description</label><br />
<textarea id="description" tabindex="3" name="description" cols="50" rows="6"></textarea>
</p>
<p><?php wp_dropdown_categories( \'show_option_none=Category&tab_index=4&taxonomy=category\' ); ?></p>
<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_post" />
<?php wp_nonce_field( \'new-post\' ); ?>
</form>
</div>
<!--// New Post Form -->
处理过程:

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,
        \'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 and return its ID
    $pid = wp_insert_post($new_post); 


}
Bonus 一旦有了post id(上例中为pid),就可以轻松设置术语和自定义字段:

 //insert taxonomies like categories tags or custom 
    wp_set_post_terms($pid,(array)($_POST[\'cat\']),\'category\',true);

//insert custom fields
update_post_meta($pid,\'meta_key_name\',$_POST[\'meta_value\']);
希望这有帮助。

结束

相关推荐

过滤NEXT_POSTS_LINK和PREVICE_POSTS_LINK的URL

我正在与qTranslate plugin 创建多语言网站。除了在next_posts_link &;previous_posts_link 模板标记。当用户选择了其他语言时,URL应更改为:http://mysite.com/test/page/2 (对于默认语言)到http://mysite.com/fr/test/page/2 (法语)该插件提供了使用qtrans_convertURL($url) 作用我遇到的问题是找到一个合适的钩子或过滤器,允许我通过next\\u posts\\u lin