wake-up-neo.net

Fügen Sie benutzerdefinierte Elemente vom Frontend hinzu

Ich versuche herauszufinden, wie ich meine WordPress-Website so gestalten kann, dass portfolio Elemente über das Frontend hinzugefügt werden können. Plugins wie das WP-User-Frontend ermöglichen das Posten vom Frontend aus, funktionieren aber nur mit Blog-Posts.

Gibt es ähnliche Möglichkeiten oder Plugins wie wp-user-frotend, aber die Möglichkeit, benutzerdefinierte Posts hinzuzufügen?

2
Sze Chuan

Wenn Sie bereit sind, dafür zu zahlen, können Sie mit dem Gravity Forms-Plugin Formulare erstellen, die Ihren benutzerdefinierten Beitragstypen (auch normalen Beitrags- und Seitentypen) sowie Ihren benutzerdefinierten Feldern zugeordnet sind.

Für diejenigen, die dies nicht tun und bereit sind, die Ärmel hochzukrempeln, können Sie ein Front-End-Formular erstellen, das Daten ganz einfach in einen beliebigen Post-Typ Ihrer Wahl schreibt.

Hier ist ein einfaches Beispiel;

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

//store our post vars into variables for later use
//now would be a good time to run some basic error checking/validation
//to ensure that data for these values have been set
$title     = $_POST['title'];
$content   = $_POST['content'];
$post_type = 'my_custom_post';
$custom_field_1 = $_POST['custom_1'];
$custom_field_2 = $_POST['custom_2'];    

//the array of arguements to be inserted with wp_insert_post
$new_post = array(
'post_title'    => $title,
'post_content'  => $content,
'post_status'   => 'publish',          
'post_type'     => $post_type 
);

//insert the the post into database by passing $new_post to wp_insert_post
//store our post ID in a variable $pid
$pid = wp_insert_post($new_post);

//we now use $pid (post id) to help add out post meta data
add_post_meta($pid, 'meta_key', $custom_field_1, true);
add_post_meta($pid, 'meta_key', $custom_field_2, true);

}

Ihr HTML-Formular würde ungefähr so ​​aussehen.

<form method="post" name="front_end" action="" >
<input type="text" name="title" value="My Post Title" />
<input type="text" name="content" value="My Post Content" />
<input type="text" name="custom_1" value="Custom Field 1 Content" />
<input type="text" name="custom_2" value="Custom Field 2 Content" />
<button type="button">Submit</button>
<input type="hidden" name="action" value="my_post_type" />
</form>

Sie können dies alles in Ihre Designvorlagendatei einfügen. Normalerweise würde ich noch einen Schritt weiter gehen und die Verarbeitungslogik (PHP) von einer Funktion in meiner functions.php ausführen, die mit einer Aktion verknüpft ist. Sie funktioniert jedoch auch innerhalb einer Themendatei.

Dies ist nur als einfaches Beispiel gedacht und macht jede ernsthafte Fehlerprüfung und -validierung überflüssig. Dies gibt Ihnen jedoch den wesentlichen Rahmen für das, was Sie vom Frontend an Ihre Beitragstypen im Backend posten müssen.

Es gibt auch zahlreiche Tutorials, die das Thema WPSE erweitern. Wenn Sie eine Suche durchführen, werden Sie eine Fülle von Informationen finden.

9
userabuser
<?php 

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

//store our post vars into variables for later use
//now would be a good time to run some basic error checking/validation
//to ensure that data for these values have been set
$title     = $_POST['title'];
$content   = $_POST['content'];
$tags   = $_POST['tag'];
$custom_field = $_POST['custom_1']; 
$post_type = 'frontpost';


//the array of arguements to be inserted with wp_insert_post
$new_post = array(
'post_title'    => $title,
'post_content'  => $content,
'tags_input'  => $tags,
'post_status'   => 'publish',
'post_category' => array('0',$_POST['cat']),          
'post_type'     => $post_type 
);

//insert the the post into database by passing $new_post to wp_insert_post
//store our post ID in a variable $pid
//we now use $pid (post id) to help add out post meta data
 $pid=wp_insert_post($new_post);

//we now use $pid (post id) to help add out post meta data
add_post_meta($pid, 'cust_key', $custom_field);


}
?>
    <div class="front-form col-sm-6">
        <form method="post" name="front_end" action="" >
            <input type="text" name="title" placeholder="FrontPost Title" required />
             <textarea  name="content" placeholder="FrontPost Content" rows="5" ></textarea>
            <input type="text" name="tag" placeholder="FrontPost tags" />
            <input type="text" name="custom_1" placeholder="Custom Field  Content" />


            <span><?php wp_dropdown_categories( 'tab_index=10&taxonomy=category&hide_empty=0' ); ?></span>
            <button type="submit">Submit</button>
            <input type="hidden" name="action" value="front_post" />
        </form>
    </div>

versuchen Sie dies, es wird Ihnen helfen ..! Aakib :)

0
Aakib