创建将用于创建自定义帖子类型的页面

时间:2013-05-19 作者:William

我已经创建了一个“事件”自定义帖子类型,现在我想创建一个允许用户从前端创建自定义帖子类型的页面。有没有标准的方法?我可以创建一个模板,然后将其链接到我在wordpress后端手动创建的页面,但如果可能的话,我宁愿通过编程实现。有什么建议吗?

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

那么你想让人们从前端创建帖子?当然

In this answer here I explain a very basic way in which you can achieve this very thing, front-end posts to a post type of your choice.

下面是一个基本示例,说明您可以在模板文件中包含哪些内容来执行此操作;

(详情请参见原始答案)

<?php
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);

}
?>
<!-- language: lang-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>
此示例没有任何错误检查、验证和清理。这只是演示如何获取表单数据并将其存储到post类型中。

SO网友:markku

我已经完成了一些利用这种方式的项目,下面是我的首选解决方案:

在主题中创建新的php页面模板XML-RPC API. 通常,我会创建一个只能提交草稿的新用户,以避免自动发布垃圾邮件或错误的详细信息创建显示帖子的页面/URL,并使用您在#1中创建的文件作为自定义模板可选:根据表单的复杂性和要实现的用户交互,您可能还需要设置custom query variables.

结束

相关推荐

Admin Ajax is returning 0

我对jQuery和AJAX尤其陌生。我有一个小问题,返回值总是0,尽管我认为这实际上是成功消息,它没有返回任何内容。我已经搜索了Google verse,在PHP回调上有die()函数,我相信add\\u操作是正确的。我在一个本地主机上工作,但我怀疑这会影响它,这都是在管理中,而不是在前端。我还检查了js是否已排队并本地化。我在chrome开发者区收到一条200 OK的消息。我还测试了http://codex.wordpress.org/AJAX_in_Plugins 它还返回了0,这让我怀疑它是否不是下