Quiero poder permitir que un usuario se registre / inicie sesión a través de un formulario de inicio de sesión y pueda crear 1 publicación personalizada que solo ellos podrán edite y actualice a través de un formulario de front-end .
Esto será parte de un "panel".
Es muy importante que esto funcione con el enlace .
Me las arreglé para llegar hasta allí usando los formularios de front-end de ACF. Esto permite la edición y actualización de una publicación personalizada.
El problema con esto es que:
- No hay registro / inicio de sesión front end.
- La publicación ya se creó, mientras que necesito un usuario para iniciar sesión y crear 1 publicación inicialmente.
- Solo puedo editar la publicación cuando estoy en la página real. Necesito que el usuario solo pueda editar su propia publicación.
Si alguien pudiera orientarme en la dirección correcta con esos problemas o tiene alguna forma creativa de solucionarlos, sería genial. Necesito hacer esto sin usar muchos otros complementos.
ACTUALIZAR :
Descubrí que esto me permitirá crear una nueva publicación a través de un formulario de front-end. Utilizando el action
del formulario, creo que puedo redirigir al usuario a la publicación personalizada que acaba de crear. Por lo tanto, eso les permitirá actualizar / editar la publicación a través del segundo cuadro de código a continuación.
¡Todo lo que necesito hacer es el registro / inicio de sesión del usuario!
<?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>
El siguiente código le permite al usuario editar / actualizar la publicación que acaba de crear.
<?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(); ?>