web-dev-qa-db-fra.com

Inscription frontale/connexion et publication/mise à jour 1 message personnalisé

Je veux pouvoir autoriser un utilisateur à s'inscrire/se connecter via un formulaire frontal et pouvoir créer 1 publication personnalisée dont il sera le seul à pouvoir éditer et mise à jour via un formulaire frontal .

Cela fera partie d'un "tableau de bord".

Il est très important que cela fonctionne avec le plugin http://www.advancedcustomfield.com .

J'ai réussi à obtenir une partie du chemin en utilisant les formulaires frontaux d'ACF. Cela permet l'édition et la mise à jour d'un article personnalisé.

Le problème avec ceci est que:

  1. Il n'y a pas d'inscription/connexion frontale.
  2. Le message a déjà été créé, alors que j'ai besoin d'un utilisateur pour me connecter et créer 1 message au départ.
  3. Je ne peux éditer le message que lorsque je suis sur la page. J'ai besoin que l'utilisateur ne puisse éditer que son propre message.

Si quelqu'un pouvait m'orienter dans la bonne direction avec ces problèmes ou s'il disposait de moyens créatifs de les contourner, ce serait formidable. Je dois le faire sans utiliser beaucoup d'autres plugins.

UPDATE:

J'ai constaté que cela me permettrait de créer un nouveau poste via un formulaire frontal. En utilisant la action du formulaire, je pense pouvoir rediriger l'utilisateur vers la publication personnalisée qu'il vient de créer. Cela leur permettra donc de mettre à jour/éditer le message via la 2ème zone de code ci-dessous.

Donc, tout ce que j'ai à faire est l'enregistrement/la connexion de l'utilisateur!

<?php $postTitle = $_POST['post_title'];
$post = $_POST['post'];
$submit = $_POST['submit'];

if(isset($submit)){

    global $user_ID;

    $new_post = array(
        'post_title' => $postTitle,
        'post_content' => $post,
        'post_status' => 'publish',
        'post_date' => date('Y-m-d H:i:s'),
        'post_author' => $user_ID,
        'post_type' => 'post',
        'post_category' => array(0)
    );

    wp_insert_post($new_post);

}

?>
<!DOCTYPE HTML SYSTEM>
<html>
<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
<title>Untitled Document</title>
</head>

<body>
<div id="wrap">
<form action="" method="post">
<table border="1" width="200">
  <tr>
    <td><label for="post_title">Post Title</label></td>
    <td><input name="post_title" type="text" /></td>
  </tr>
  <tr>
    <td><label for="post">Post</label></td>
    <td><input name="post" type="text" /></td>
  </tr>
</table>

<input name="submit" type="submit" value="submit" />
</form>
</div>

</body>
</html>

Le code ci-dessous permet à l'utilisateur de modifier/mettre à jour le message qu'il vient de créer.

<?php
/**
 * @package WordPress
 * @subpackage Default_Theme
 * Template Name: Login
 */
acf_form_head();
get_header(); ?>

    <?php if (have_posts()) : ?>
        <?php while (have_posts()) : the_post(); ?>

<div style="width:719px;">
<?php global $current_user;
get_currentuserinfo();
$page_name = $current_user->user_login; ?>
Logged in as: <?php echo $page_name; ?> (<?php echo $current_user->ID; ?>)
<br />
List posts by <?php echo $page_name; ?>:

<?php               
$loop = new WP_Query( array(
    'post_type' => 'page',
    'author' => $current_user->ID
));

while ( $loop->have_posts() ) : $loop->the_post(); 
the_title();
echo "<br>";
endwhile;

//Reset Query
wp_reset_query();

?>

<?php $defaults = array(
    'post_id' => $post->ID, // post id to get field groups from and save data to
    'field_groups' => array(), // this will find the field groups for this post (post ID's of the acf post objects)
    'form_attributes' => array( // attributes will be added to the form element
        'class' => ''
    ),
    'return' => add_query_arg( 'updated', 'true', get_permalink() ), // return url
    'html_field_open' => '<div class="field">', // field wrapper open
    'html_field_close' => '</div>', // field wrapper close
    'html_before_fields' => '', // html inside form before fields
    'html_after_fields' => '', // html inside form after fields
    'submit_value' => 'Update', // value for submit field
    'updated_message' => 'Post updated.', // default updated message. Can be false to show no message
);

acf_form(); ?>
</div>

        <?php endwhile; ?>
    <?php endif; ?>

<?php get_footer(); ?>
4
Rob

Le plug-in WP User Frontend répondra à tous vos besoins. Vous pouvez trouver le plugin ici: https://wordpress.org/extend/plugins/wp-user-frontend/ . Le plugin donne à l'utilisateur la possibilité de créer une nouvelle publication, de modifier une publication, de modifier un profil depuis une interface de site. Ainsi, les utilisateurs n'ont pas besoin d'entrer dans le panneau d'administration. Tout ce qu'ils doivent faire peut être fait depuis le frontend.

Si vous effectuez une petite recherche sur Google, vous rencontrerez de nombreux autres plugins avec des fonctionnalités similaires. Je pense que le WP User Frontend sera le plus compatible avec vos besoins et vos désirs.

5
Aleks

Puisque vous avez déjà résolu le problème de l'édition, pour régler votre connexion et votre enregistrement frontaux, utilisez s2member plugin . Je l'utilise sur mon site pour gérer les abonnements et empêcher les membres d'accéder au backend de Wordpress.

1
Logen

J'utilise le plug-in wp-members pour l'enregistrement des utilisateurs et la connexion sans accéder à Wordpress. Vous aurez cependant besoin d'un code personnalisé pour la réinitialisation du mot de passe. J'utilise cette solution .

Merci pour le code qui permet aux utilisateurs de créer de nouveaux messages!

0
Adj

Pour gérer uniquement l’enregistrement des utilisateurs et la connexion au front-end, Thème My Login fait un travail plutôt agréable.

Ce plugin thématise les pages de connexion, d’enregistrement et de mot de passe oublié WordPress en fonction de votre thème actuel. Il crée une page à utiliser à la place de wp-login.php, en utilisant un modèle de page de votre thème. Inclut également un widget pour la connexion à la barre latérale.

La page du plugin n'a pas de capture d'écran, alors les voici:
enter image description here


Voici où vous redirigez les utilisateurs vers la page qui utilise le Template Name: Login:
enter image description here

0
brasofilo