web-dev-qa-db-fra.com

Créer des publications sans connexion depuis le frontend

Je suis nouveau dans le développement WordPress, j'utilise wp_insert_post() pour créer des publications à partir de front-end. Cette fonction fonctionne correctement lorsque je me suis déjà connecté, mais je dois l'implémenter sans aucun identifiant.

pouvez-vous s'il vous plaît me guider de la façon exacte comment cela peut être réalisé.

$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
owt

Vous ne devez pas autoriser les utilisateurs anonymes à publier quoi que ce soit sur votre site Web sans authentification. Si vous devez stocker des données personnalisées spécifiées par les utilisateurs, utilisez plutôt les champs personnalisés.

Dans votre cas, add_post_meta() est pratique. Après avoir créé une publication à l'aide de wp_insert_post(), transmettez son ID à add_post_meta() et ajoutez des champs personnalisés à cette publication spécifique:

$id = wp_insert_post( $args );
if ( $id ) {
    add_post_meta( $id, $meta_key, $meta_value, $unique );
}

Vous devez également supprimer les entrées utilisateur avant de les insérer dans la base de données. Vous pouvez utiliser sanitize_text_field() à cette fin.

1
Jack Johansson

Non Plugins:

Regardez wp insert post args:
https://developer.wordpress.org/reference/functions/wp_insert_post/

Vous devriez créer une entrée HTML pour certains de ces $ args. Lorsque post envoyé (si post post), vous pouvez faire:

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 
}
}

Utilisation de plugins:

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

semble plus facile

1
Asisten