私は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 );
匿名ユーザーが認証なしでWebサイトに何かを公開することを許可しないでください。ユーザーが指定したカスタムデータを保存する必要がある場合は、代わりにカスタムフィールドを使用してください。
あなたの場合は、 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()
を使うことができます。
非プラグイン:
Wp insert post argsを見てください。
https://developer.wordpress.org/reference/functions/wp_insert_post/
あなたはそれらの$ argsのいくつかのためにhtml入力を作成するべきです。投稿が投稿されたとき(投稿が設定されている場合)、次のことができます。
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
}
}
プラグインを使う:
https://wordpress.org/plugins/advanced-custom-fields/ /
簡単に見える