在没有前台登录的情况下创建帖子

时间:2017-09-13 作者:owt

我是WordPress开发新手,我正在使用wp_insert_post() 要从前端创建帖子,当我已经登录时,此功能可以正常工作,但我需要在没有任何登录的情况下实现此功能。

你能告诉我怎样才能做到这一点吗。

$post = array(
 \'post_title\'   => "Tshirt-custom-order-".$last_inserted,
 \'post_content\' => "oio",
 \'post_status\'  => "publish",
 \'post_excerpt\' => "uuu",
 \'post_name\'    => "order_custom_".$last_inserted, //name/slug
 \'post_type\'    => "product",
 \'post_author\' =>6
 );
 //Create product/post:
$new_post_id = wp_insert_post( $post, $wp_error );
//$new_post_id = wp_insert_post( $args );

2 个回复
SO网友:Johansson

您不应允许匿名用户在没有身份验证的情况下在您的网站上发布任何内容。如果需要存储用户指定的自定义数据,则应使用自定义字段。

就你而言,add_post_meta() 很方便。使用创建帖子后wp_insert_post(), 将其ID传递给add_post_meta() 并向该特定帖子添加自定义字段:

$id = wp_insert_post( $args );
if ( $id ) {
    add_post_meta( $id, $meta_key, $meta_value, $unique );
}
您还应该在将用户输入插入数据库之前对其进行清理。您可以使用sanitize_text_field() 正是为了这个目的。

SO网友:Asisten

Non Plugins:

查看wp insert post参数:
https://developer.wordpress.org/reference/functions/wp_insert_post/

您应该为其中一些$参数创建html输入。提交post时(如果设置为post),您可以执行以下操作:

if (!is_user_logged_in()){
$newid = wp_insert_post($args); 
if ($newid){ 
// add_post_meta here if  your post type have 
//some success notification 
} else { 
//some failed notification 
}
}

Using Plugins:

https://wordpress.org/plugins/advanced-custom-fields/

看起来更简单

结束

相关推荐

WP Query 'posts_per_page'

我有一个自定义的帖子类型Clinics 和Doctors. 每个诊所都有自己的clinic\\u id(通过自定义字段)。每个医生都有相同的领域clinic_id 他工作的诊所很多。我需要穿上single-clinic.php 显示在此工作的所有医生(将医生的clinic\\u id与当前页面的clinic\\u id进行比较)。为此,我创建了新WP_Query 对象和所有医生的列表,然后如果clinic\\u id(在clinic页上)==clinic\\u id(在doctors页上),则显示他们。问