Formulario para Agregar Entradas a un Tipo de Publicación Personalizada

6 mar 2011, 10:58:03
Vistas: 32.1K
Votos: 9

Básicamente quiero mostrar un formulario en mi blog (en una página específica) que permita a cualquier persona completarlo y que creará una entrada en un tipo de publicación personalizada.

Vi la respuesta una vez antes pero no puedo encontrarla ahora.

2
Comentarios

Probablemente quieras construir esto tú mismo, pero recientemente empecé a trabajar con un plugin llamado Formidable que hace esto muy bien. Hay una versión gratuita, quizá quieras echarle un vistazo. http://wordpress.org/extend/plugins/formidable/

Dalton Rooney Dalton Rooney
24 ene 2012 22:13:11

Probé Formidable. Pero la versión gratuita tiene limitaciones. Campos de fecha, hora, ocultos, etc. están bloqueados.

Eugine Joseph Eugine Joseph
29 ene 2017 13:27:00
Todas las respuestas a la pregunta 2
13
13

Publicar desde el front-end consiste en mostrar un formulario y procesarlo:

Formulario:

<!-- Formulario para nueva entrada -->
<div id="postbox">
<form id="new_post" name="new_post" method="post" action="">

<!-- Título de la entrada -->
<p><label for="title">Título</label><br />
<input type="text" id="title" value="" tabindex="1" size="20" name="title" />
</p>

<!-- Categoría de la entrada -->
<p><label for="Category">Categoría:</label><br />
<p><?php wp_dropdown_categories( 'show_option_none=Categoría&tab_index=4&taxonomy=category' ); ?></p>


<!-- Contenido de la entrada -->
<p><label for="description">Contenido</label><br />
<textarea id="description" tabindex="3" name="description" cols="50" rows="6"></textarea>
</p>

<!-- Etiquetas de la entrada -->
<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>

El procesamiento:

if( 'POST' == $_SERVER['REQUEST_METHOD'] && !empty( $_POST['action'] ) &&  $_POST['action'] == "new_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';
    }
    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,
        'post_category' => array($_POST['cat']),  // También usable para taxonomías personalizadas
        'tags_input'    => array($tags),
        'post_status'   => 'publish',           // Opciones: publish, preview, future, draft, etc.
        'post_type' => 'post_type_name'  // 'post', 'page' o usar un tipo de entrada personalizado
    );
    // Guardar la nueva entrada
    $pid = wp_insert_post($new_post); 
    // Insertar taxonomías
}
6 mar 2011 11:23:57
Comentarios

@Bainternet - Gracias, ahora ¿hay alguna manera de que el formulario redirija a la nueva publicación después de enviarlo?

Jared Jared
6 mar 2011 12:45:02

sí, wp_redirect(get_permalink($pid)); exit;

Bainternet Bainternet
6 mar 2011 12:55:21

@Bainternet - Gracias de nuevo, pero cuando coloco eso después de la función wp_insert_post, obtengo un error que dice que no se pueden modificar los encabezados. ¿Dónde lo coloco?

Jared Jared
6 mar 2011 22:37:44

wp_insert_post no modifica ningún encabezado ni genera ninguna salida, lo que me hace pensar que algo se está imprimiendo en tu código. Pega el código exacto que estás usando para poder analizarlo mejor.

Bainternet Bainternet
6 mar 2011 23:37:21

@Bainternet - http://pastebin.com/jTzryzAs

Jared Jared
7 mar 2011 05:11:19

Así es como deberías estructurar el código: http://pastebin.com/SRi2ZxWa

ariefbayu ariefbayu
9 mar 2011 00:56:17

@Jared silent tiene razón, la parte de procesamiento debe ir antes del formulario

Bainternet Bainternet
9 mar 2011 01:07:52

Hmm... algo curioso. He usado todas las variaciones de un formulario de publicación que puedo encontrar. Incluyendo esta. No logro que la parte de validación haga algo......

Rev. Voodoo Rev. Voodoo
25 mar 2011 21:29:09

¿cómo agregar campos post_meta a este formulario?

Mohannad Qamara Mohannad Qamara
19 ene 2012 15:45:18

@MohannadQamara puedes usar lo siguiente después de $pid = wp_insert_post($new_post);-- if( $pid ) { add_post_meta( $pid, 'post_meta_name', 'post meta value' ); }

Jared Jared
19 ene 2012 16:43:18

@Bainternet ¿qué tal aplicar términos a una taxonomía específica para el tipo de contenido personalizado?

Anagio Anagio
16 dic 2012 10:43:29

@Anagio considera Hacer una nueva pregunta y hacer referencia a esta.

Bainternet Bainternet
16 dic 2012 13:26:00

@Bainternet lo haré mañana una vez que pueda publicar algún código de ejemplo para demostrar que he intentado algo. Encontré algunos tutoriales. Si no tengo éxito, lo publicaré.

Anagio Anagio
16 dic 2012 13:29:11
Mostrar los 8 comentarios restantes
1

Podría ser más sencillo usar un plugin para esto.

También podrías utilizar el excelente plugin Contact Form 7 junto con la extensión Post My CF7 Form que te permitirá guardar cualquier formulario personalizado en un tipo de entrada personalizada (custom post), incluyendo imágenes como adjuntos destacados, campos meta personalizados y entradas de tipo selección/casillas de verificación/botones de radio como taxonomías.

El plugin Post My CF7 Form tiene una funcionalidad muy completa que se puede aprovechar para personalizar y ajustar aún más la forma en que se guardan tus formularios. También hay una sección de documentación detallada.

17 oct 2016 11:35:46
Comentarios

deberías mencionar que eres el creador del plugin.

David Guida David Guida
22 jun 2023 04:54:54