[Résolu] Base de données (Créer un compte)

  • WordPress :5.7
  • Statut : résolu
9 sujets de 1 à 9 (sur un total de 9)
  • Auteur
    Messages
  • #2375752
    kikadikoi
    Participant
    Initié WordPress
    8 contributions

    Bonjour,

    Ma configuration WP actuelle

    • Version de PHP/MySQL : 8
    • Thème utilisé : perso
    • Extensions en place : sans
    • Nom de l’hébergeur : localhost
    • Adresse du site : localhost

    Problème(s) rencontré(s) :

    Je suis débutant sur WP !

    Est-il possible d’enregistrer les données d’un formulaire dans la BD de WP ?
    Je précise que je n’utilise pas WP comme un blog mais comme un simple site. Puis-je utiliser des fonctions de WP pour cela ? Si oui, lesquelles?

     

    #2375761
    mathieu42
    Participant
    Maître WordPress
    642 contributions
    #2375770
    kikadikoi
    Participant
    Initié WordPress
    8 contributions

    Merci pour ta réponse et les liens d’infos ! …

    Si je comprends bien,  il faut que je parte sur la création d’une extension ; dans laquelle je vais coder ma fonction pour afficher un formulaire ?

    Alors, j’ai bien vu cette histoire de custom_post_type, mais c’est valable quand on a accès à l’interface d’administration. Or, un internaute n’a pas accès à l’admin de WP. Donc, je voudrais qu’il trouve sur une page un formulaire à remplir … Mais à partir de là, je ne vois pas comment je peux transférer les variables vers WP ??

    #2375771
    mathieu42
    Participant
    Maître WordPress
    642 contributions

    le type personnalisé est juste la structure des données enregistrées dans la base. ensuite vous pouvez y accéder depuis l’espace d’administration et depuis les pages publiques.

    quel genre d’informations voulez-vous enregistrer ?

    #2375809
    kikadikoi
    Participant
    Initié WordPress
    8 contributions

    En fait, la question ne porte pas sur le genre d’information que je veux enregistrer ;  mais plutôt comment je crée un enregistrement ? (d’habitude, quand je code en PHP l’enregistrement de données (émanant d’un formulaire), j’utilise une class (CRUD) dont une fonction va gérer le contrôle de la donnée saisie, et une autre fonction va gérer “l’input” dans la BD, via une SQL query.

    J’imagine que dans WP c’est le “core” de WP qui prend ça en charge … ? Et vu que le CPT est juste la structure des données, je ne vois pas comment présenter à l’enregistrement la saisie d’un formulaire, par exemple :

    <form>
        <label>Groupes: <input type="text"></label>
        <label>Ville: <input type="text"></label>
        <input type="submit" value="Submit">
    </form>
    form

     

    • Cette réponse a été modifiée le il y a 2 semaines et 1 jour par kikadikoi. Raison: correction
    #2375815
    mathieu42
    Participant
    Maître WordPress
    642 contributions

    pour traiter un formulaire, vous pouvez l’envoyer vers un traitement wordpress comme cela :

    		<form method="POST" action="<?php echo htmlspecialchars(admin_url("admin-post.php"));?>">
    			<input
    				type="hidden"
    				name="action"
    				value="nom_extension__enregistrer_formulaire"
    			/>
    			<input type="submit" name="enregistrer" value="Envoyer"/>
    		</form>

    et ensuite dans l’extension vous gérez les données comme cela :

    add_action("admin_init", function () {
    	
    	if (	!isset($_POST["action"])
    		||	("nom_extension__enregistrer_formulaire" !== $_POST["action"])
    	) {
    		return;
    	}
    	
    	
    	// traitement du formulaire
    	
    	var_dump($_POST);
    	
    	
    	
    	// enregistrement d'un nouvel objet "demande"
    	
    	wp_insert_post([
    		"post_type" => "demande",
    		"post_title" => "Contact de M. Jean",
    		"post_content" => "téléphone : 1234",
    	]);
    	
    	
    });

    #2375862
    kikadikoi
    Participant
    Initié WordPress
    8 contributions

    Ah super !  Merci pour cette démonstration.

    Ça complète et confirme les infos sur la fonction “wp_insert_post()“, que j’avais fini par trouver, entre-temps … en farfouillant dans la doc WP. Mais c’était pas évident pour moi … je m’attendais à une fonction du genre “wp_insert_form()” !

    Bon, un blocage en moins ! …  🙂

    Ceci dit, je me pose encore une question. Tout ce que je vais enregistrer de cette façon va se retrouver, à disposition, dans le tableau de bord, comme :  les posts, les pages, les articles, etc …

    Alors, y a-t-il une manière pour ne pas retrouver les enregistrements dans le tableau de bord ??

    #2375875
    mathieu42
    Participant
    Maître WordPress
    642 contributions

    à la création du type avec “register_post_type”, vous pouvez ajouter l’option “map_meta_cap => TRUE”. cela va créer des permissions spéciales pour ce type d’objet.

    et vous pourrez ensuite donner ces permissions aux différents rôles. si vous n’ajoutez aucune permissions, aucun utilisateur ne verra ce type personnalisé et il sera seulement accessible par le code :

    https://developer.wordpress.org/plugins/users/roles-and-capabilities/

    #2375971
    kikadikoi
    Participant
    Initié WordPress
    8 contributions

    (je passe le sujet en résolu)

    Merci beaucoup !

9 sujets de 1 à 9 (sur un total de 9)
  • Vous devez être connecté pour répondre à ce sujet.