Postări Anonime în WordPress - Cum să Creezi un Formular de Contribuție

2 feb. 2011, 01:05:54
Vizualizări: 834
Voturi: 1

Acesta este un repost al unei întrebări adresate pe stackoverflow și care a fost trimisă către acest site:

Clientul meu dorește să creeze un formular pe noul său site WordPress care, atunci când este completat și trimis, să fie trimis către coada sa de postări pentru aprobare, iar dacă este aprobat, să fie publicat pe site-ul său în secțiunea "blog" (care de fapt reprezintă o colecție de tablaturi pentru chitară). Formularul ar trebui să fie personalizat și să conțină câmpuri personalizate. Mai jos este formularul, dar în vechiul design înainte de actualizarea pe care am făcut-o.

Deci, cât de dificil ar fi acest lucru? El nu dorește să fie în panoul de administrare WordPress, unde am început să-l creez, ci în afara acestuia, pe o pagină precum /contribute

Formular vechi pentru contribuții

0
Toate răspunsurile la întrebare 2
5

puteți folosi plugin-uri pentru postarea din front-end:

Sau puteți crea formularul singur

    <!-- Formular pentru Postare Nouă -->
<div id="postbox">
<form id="new_post" name="new_post" method="post" action="">
<p><label for="title">Titlu</label><br />
<input type="text" id="title" value="" tabindex="1" size="20" name="title" />
</p>
<p><label for="description">Descriere</label><br />
<textarea id="description" tabindex="3" name="description" cols="50" rows="6"></textarea>
</p>
<p><?php wp_dropdown_categories( 'show_option_none=Categorie&tab_index=4&taxonomy=category' ); ?></p>
<p><label for="post_tags">Etichete</label>
<input type="text" value="" tabindex="5" size="16" name="post_tags" id="post_tags" /></p>
<p align="right"><input type="submit" value="Publică" tabindex="6" id="submit" name="submit" /></p>
<input type="hidden" name="action" value="new_post" />
<?php wp_nonce_field( 'new-post' ); ?>
</form>
</div>
<!--// Formular pentru Postare Nouă -->

și procesați-l

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

    if (isset ($_POST['title'])) {
        $title =  $_POST['title'];
    } else {
        echo 'Vă rugăm să introduceți un titlu';
    }
    if (isset ($_POST['description'])) {
        $description = $_POST['description'];
    } else {
        echo 'Vă rugăm să introduceți conținutul';
    }
    $tags = $_POST['post_tags'];

    $new_post = array(
        'post_title'    => $title,
        'post_content'  => $description,
        'post_category' => $_POST['cat'],  
        'tags_input'    => $tags,
        'post_status'   => 'draft'
    );
    wp_insert_post($new_post);  

}

Și asigurați-vă că verificați nonce și curățarea câmpurilor formularului.

ACTUALIZARE

Conform codului dvs. de pe gist și comentariului, schimbați funcția în aceasta:

 if( 'POST' == $_SERVER['REQUEST_METHOD'] && !empty( $_POST['action'] ) && ($_POST['action']== 'new_post')) {
        $has_errors = false;
        if (isset ($_POST['title'])) {
            $title = $_POST['title'];
        } else {
            echo 'Vă rugăm să introduceți un titlu';
            $has_errors = true;
        }
        if (isset ($_POST['performer'])) {
            $performer = $_POST['preformer'];
        } else {
            echo 'Vă rugăm să introduceți un interpret';
            $has_errors = true;
        }
        if (isset ($_POST['composer'])) {
          $composer = $_POST['composer'];
        } else {
            echo 'Vă rugăm să introduceți un compozitor';
            $has_errors = true;
        }
        if (isset ($_POST['tablature'])) {
            $tablature = $_POST['tablature'];
        } else {
            echo 'Vă rugăm să introduceți conținutul';
            $has_errors = true;
        }
        $tags = $_POST['post_tags'];
        if (!$has_errors){
        //salvează <title>  by: <preformer>
        $title .= " by: " .$performer;

        //salvează Composed by: <composer> Performed by: <performer> <tablature>
        $content = "<h4>Composed by: ". $composer."</h4><br/><h4>Performed by: ".$performer."</h4><br/>".$tablature;

        $new_post = array(
            'post_title' => $title,
            'post_content' => $content,
            'post_category' => $_POST['cat'],
            'tags_input' => $tags,
            'post_status' => 'draft'
        );
        $pid = wp_insert_post($new_post);


        //salvează email și submmiter ca post meta în câmpuri personalizate
        update_post_meta($pid, 'submiter_email', urldecode($_POST['email']));
        update_post_meta($pid, 'submiter_name', urldecode($_POST['submitter']));
    }
}
2 feb. 2011 09:46:19
Comentarii

Nu sunt programator PHP și nici nu pretind că aș fi, dar iată ce am scos la iveală: https://gist.github.com/810767. Ideea este ca rezultatul să fie „<titlul melodiei> de <interpret>” în titlu și „<h4>Compozitor: <compozitor></h4><br/><h4>Interpretat de: <interpret></h4><br/><descriere>” în zona de conținut. Acest cod a creat o schiță nouă de articol, dar această schiță era goală, în afară de titlu. Cred că sunt aproape, dar nu chiar acolo. Mulțumesc enorm pentru acest răspuns, cu siguranță m-ai pus pe drumul cel bun!!

Unfortunately Unfortunately
4 feb. 2011 05:18:43

nu salvezi niciunul dintre câmpuri în noul tău articol.

Bainternet Bainternet
4 feb. 2011 11:24:10

Am actualizat răspunsul

Bainternet Bainternet
4 feb. 2011 11:38:00

Mulțumesc din nou pentru ajutor! Acesta este punctul în care mă aflu acum, și este aproape finalizat, dar sunt blocat la trei lucruri. Categoriile nu se postează, titlul se postează ca <title> de: <title> în loc de <title> de: <performer>, și titlul pare să apară inițial în lista de postări, dar când dau click pe titlu pentru a merge la pagina de editare a postării, bara de titlu este goală? https://gist.github.com/35ad2c03a340bb324109

Unfortunately Unfortunately
5 feb. 2011 06:09:25

Deci, în plus față de câmpul de titlu care apare gol când intru pe pagina 'editare post', permalink-ul ARE titlul melodiei în formă de permalink. Ciudat. Se pare că de asemenea formularul afișează "Interpretat de: <titlul melodiei>". Apreciez foarte mult ajutorul tău!

Unfortunately Unfortunately
5 feb. 2011 06:57:18
2

Nu am verificat, dar acest plugin probabil vă arată cum să abordați problema. Iată încă unul, sau ați putea crea un utilizator special numit 'anonim' și să îi acordați permisiuni de 'autor'. Probabil că ar fi bine să fiți atenți în acordarea permisiunilor de editare sau ștergere.

2 feb. 2011 03:12:42
Comentarii

Am încercat anterior să fac asta să funcționeze cu TDOMF, dar 'hack form-ul' era mult prea complicat pentru mine. Dacă nu reușesc să scriu asta singur (prin care înțen cu ajutorul oamenilor ca tine), voi încerca postarea anonimă! Mulțumesc!

Unfortunately Unfortunately
4 feb. 2011 06:15:44

Am actualizat codul

Bainternet Bainternet
5 feb. 2011 11:40:16