Estoy intentando crear un formulario simple de frontend para publicar
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!

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.

¡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?

Listo, http://wordpress.stackexchange.com/questions/17400/how-can-i-edit-a-post-from-the-frontend
