Estoy intentando crear un formulario simple de frontend para publicar

21 abr 2011, 03:38:30
Vistas: 18.8K
Votos: 2

Estoy intentando aprender y crear cosas más avanzadas con WordPress. Mi objetivo es crear un código/script/plugin que me permita publicar desde el frontend.

He visto muchos plugins, como el tema Templatic Classifieds que envían, manejan y editan posts desde el frontend, pero son muy complejos con código innecesario para mi propósito.

Me gustaría tener una visión más clara sobre cómo obtener el ID, cómo establecer un título, contenido y campos personalizados, por supuesto.

Una vez que supere esto, quiero estudiarlo según el user_meta.

¡Gracias por tus ejemplos, códigos, ideas y enlaces!

0
Todas las respuestas a la pregunta 1
5

Para publicar desde el front-end puedes usar la función wp_insert_post().

Así que simplemente se trata de crear un formulario y procesarlo

El formulario:

<!-- Formulario de nueva publicación -->
<div id="postbox">
<form id="new_post" name="new_post" method="post" action="">
<p><label for="title">Título</label><br />
<input type="text" id="title" value="" tabindex="1" size="20" name="title" />
</p>
<p><label for="description">Descripción</label><br />
<textarea id="description" tabindex="3" name="description" cols="50" rows="6"></textarea>
</p>
<p><?php wp_dropdown_categories( 'show_option_none=Categoría&tab_index=4&taxonomy=category' ); ?></p>
<p><label for="post_tags">Etiquetas</label>
<input type="text" value="" tabindex="5" size="16" name="post_tags" id="post_tags" /></p>
<p align="right"><input type="submit" value="Publicar" tabindex="6" id="submit" name="submit" /></p>
<input type="hidden" name="action" value="new_post" />
<?php wp_nonce_field( 'new-post' ); ?>
</form>
</div>
<!--// Formulario de nueva publicación -->

El procesamiento:

if( 'POST' == $_SERVER['REQUEST_METHOD'] && !empty( $_POST['action'] ) &&  $_POST['action'] == "new_game_post") {

    // Validación básica del formulario para asegurar que hay contenido
    if (isset ($_POST['title'])) {
        $title =  $_POST['title'];
    } else {
        echo 'Por favor ingresa un título para el juego';
    }
    if (isset ($_POST['description'])) {
        $description = $_POST['description'];
    } else {
        echo 'Por favor ingresa el contenido';
    }
    $tags = $_POST['post_tags'];

    // Agregar el contenido del formulario a $post como un array
    $new_post = array(
        'post_title'    => $title,
        'post_content'  => $description,
        'tags_input'    => array($tags),
        'post_status'   => 'publish',           // Opciones: publish, preview, future, draft, etc.
        'post_type' => $_POST['post_type']  // Usar un custom post type si es necesario
    );
    // Guardar la nueva publicación y retornar su ID
    $pid = wp_insert_post($new_post); 


}

Bonus Una vez que tienes el ID de la publicación ($pid en el ejemplo anterior) puedes fácilmente asignar términos y campos personalizados:

 // Insertar taxonomías como categorías, etiquetas o custom
    wp_set_post_terms($pid,(array)($_POST['cat']),'category',true);

// Insertar campos personalizados
update_post_meta($pid,'meta_key_name',$_POST['meta_value']);

Espero que esto ayude.

21 abr 2011 04:54:08
Comentarios

¡Realmente ayuda, gracias! ¿Para qué son los términos? Entonces, en el formulario de procesamiento, pongo el código "insertar campos personalizados" con el ID/nombre correcto en el formulario, ¿verdad?

¿Qué pasa si quiero editar una entrada desde el frontend?

EnexoOnoma EnexoOnoma
21 abr 2011 05:26:43

Hola, ¿cómo puedo eliminar o editar una entrada desde el frontend?

EnexoOnoma EnexoOnoma
16 may 2011 17:05:29

Pregunta esto como una cuestión separada

Bainternet Bainternet
16 may 2011 17:19:19

@Punkis respondí esa pregunta.

Bainternet Bainternet
31 may 2011 10:40:02