martes, 11 de agosto de 2020

Become a wordpress developer 4 - CRUD Frontend

Vamos a hacer un CRUD para los alumnos, para ello vamos a crear una nueva pagina que se llame mis notas:
Y me voy a crear UNA PAGINA para my-notes
page-my-notes.php
Y vamos a dejar:
<?php
get_header();
while(have_posts()){
    the_post();
    pageBanner();
?>
  <div class="container container--narrow page-section">

  </div>


<?php get_footer(); ?>

Ahora en el header vamos a hacer en la parte donde estoy logueado, un boton de mis notas, asi se ve solo si estoy logueado:
<?php
          if(is_user_logged_in()){
          ?>
          <a href="<?php esc_url(site_url('/my-notes.php')); ?>" 
            class="btn btn--small btn--orange float-left push-right">My Notes</a>
          <a href="<?php echo wp_logout_url(); ?>" 
            class="btn btn--small btn--dark-orange float-left">
          <span class="site-header__avatar">
            <?php echo get_avatar(get_current_user_id(), 60); ?>
          </span>
          <span class="btn__text">Log Out</span>
          </a>
          <?php }else?>


Si un usuario no logueado escribe my-notes en la barra de direcciones lo deja entrar, asi que vamos a la page-my-notes y arriba del todo vamos a hacer una condicion para que solo pueda entrar a esa pagina si esta logueado, sino me lo redirige a la home page:
Y para ello vamos a usar la funcion:

is_user_logged_in()

Function: Determines whether the current visitor is a logged in user.

Arriba del todo:
if(!is_user_logged_in()){
    wp_redirect(esc_url(site_url('/')));
}


DONDE GUARDAMOS LA INFORMACION DE LAS NOTAS??
EN LA BASE DE DATOS DE WP

Para ello vamos a crear un nuevo post type y le vamos a poner "notes"

Asi que nos vamos a nuestra carpeta de plugins al archivo de post types y vamos abajo del todo a crear este; tendra algunas diferencias:
register_post_type('note'array(
        'show_in_rest' => true,
        'supports' => array('title''editor'),
        'public' => false,
        'show_ui' => true,
        'labels' => array(
            'name' => 'Events'
        ),
        'menu_icon' => 'dashicons-welcome-write-blog'
    ));

Se muestra en rest --> true
Public --> false
show_ui --> true para que lo veamos en el dashboard

Ahora, nos vamos a crear un par de notas desde dashboard.

Ahora, vamos a page-my-notes.php para:
1- Traer las notas que he creado
2- Vamos a hacer un boton para editar y eliminar

Vamos a escribir el siguiente codigo:
<?php
if(!is_user_logged_in()){
    wp_redirect(esc_url(site_url('/')));
}
get_header();
$userNotes = new WP_Query(array(
    'posts_per_page' => -1,
    'post_type' => 'note',
    'author' => get_current_user_id()
));
while($userNotes->have_posts()){
    $userNotes->the_post(); ?>
  <div class="container container--narrow page-section">
    <input class="note-title-field" value="<?php echo esc_attr(get_the_title()); ?>">
    <textarea class="note-body-field"><?php echo esc_attr(get_the_content()); ?></textarea>
  </div>
<?php } ?>

<?php get_footer(); ?>

esc_attr es muy importante para la seguridad de la web !
y con author estamos definiendo bien que sea el author actual, sus notas quiero decir.

Si hay problemas con textarea:(yo no tuve problemas)
<textarea class="note-body-field"> 
<?php echo wp_strip_all_tags(esc_attr(get_the_content())); ?></textarea>


Ahora vamos a hacer boton de editar y de eliminar:


No hay comentarios:

Publicar un comentario

Creando plugin Wordpress - 03

  11- USUARIOS -Para crear un usuario lo mas facil desde el admin- FUNCIONES PARA AGREGAR USUARIO: wp_create_user ( string  $username , stri...