Sto cercando di creare un semplice form frontend per i post

21 apr 2011, 03:38:30
Visualizzazioni: 18.8K
Voti: 2

Sto cercando di imparare e creare cose più avanzate con Wordpress. Il mio obiettivo è creare un codice/script/plugin che mi permetta di pubblicare post dal frontend.

Ho visto molti plugin, come il tema Templatic Classifieds che invia, gestisce e modifica post dal frontend, ma sono molto complessi con codice inutile per il mio scopo.

Vorrei avere una visione più chiara su come ottenere l'ID, come impostare un titolo, il contenuto e ovviamente i campi personalizzati.

Una volta superato questo passo, voglio studiarlo in relazione a user_meta.

Grazie per i vostri esempi, codici, idee, link!

0
Tutte le risposte alla domanda 1
5

Per pubblicare un articolo dal front-end puoi utilizzare la funzione wp_insert_post().

Quindi si tratta semplicemente di creare un modulo e processarlo

il modulo:

<!-- Modulo per il nuovo articolo -->
<div id="postbox">
<form id="new_post" name="new_post" method="post" action="">
<p><label for="title">Titolo</label><br />
<input type="text" id="title" value="" tabindex="1" size="20" name="title" />
</p>
<p><label for="description">Descrizione</label><br />
<textarea id="description" tabindex="3" name="description" cols="50" rows="6"></textarea>
</p>
<p><?php wp_dropdown_categories( 'show_option_none=Categoria&tab_index=4&taxonomy=category' ); ?></p>
<p><label for="post_tags">Tag</label>
<input type="text" value="" tabindex="5" size="16" name="post_tags" id="post_tags" /></p>
<p align="right"><input type="submit" value="Pubblica" tabindex="6" id="submit" name="submit" /></p>
<input type="hidden" name="action" value="new_post" />
<?php wp_nonce_field( 'new-post' ); ?>
</form>
</div>
<!--// Modulo per il nuovo articolo -->

il processing:

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

    // Effettua una validazione minima del form per assicurarsi che ci siano contenuti
    if (isset ($_POST['title'])) {
        $title =  $_POST['title'];
    } else {
        echo 'Inserisci un titolo per il gioco';
    }
    if (isset ($_POST['description'])) {
        $description = $_POST['description'];
    } else {
        echo 'Inserisci il contenuto';
    }
    $tags = $_POST['post_tags'];

    // Aggiunge il contenuto del form a $post come array
    $new_post = array(
        'post_title'    => $title,
        'post_content'  => $description,
        'tags_input'    => array($tags),
        'post_status'   => 'publish',           // Scegli: publish, preview, future, draft, etc.
        'post_type' => $_POST['post_type']  // Usa un custom post type se necessario
    );
    //salva il nuovo articolo e restituisce il suo ID
    $pid = wp_insert_post($new_post); 


}

Bonus Una volta che hai l'ID dell'articolo ($pid nell'esempio sopra) puoi facilmente impostare termini e custom fields:

 //inserisci tassonomie come categorie, tag o custom
    wp_set_post_terms($pid,(array)($_POST['cat']),'category',true);

//inserisci custom fields
update_post_meta($pid,'meta_key_name',$_POST['meta_value']);

spero sia d'aiuto.

21 apr 2011 04:54:08
Commenti

Mi è stato davvero utile, grazie! A cosa servono questi termini? Quindi nel form di elaborazione inserisco il codice "insert custom fields" con l'id/nome corretto nel form giusto?

E se volessi modificare un post dal frontend?

EnexoOnoma EnexoOnoma
21 apr 2011 05:26:43

Ciao, come posso eliminare o modificare un post dal frontend?

EnexoOnoma EnexoOnoma
16 mag 2011 17:05:29

Fai questa come domanda separata

Bainternet Bainternet
16 mag 2011 17:19:19

@Punkis ho risposto a quella domanda.

Bainternet Bainternet
31 mag 2011 10:40:02