web-dev-qa-db-fra.com

Ajouter des éléments de type publication personnalisés à partir de l'interface

J'essaie de comprendre comment créer mon site web wordpress pour pouvoir ajouter des éléments portfolio à partir de l'interface. Des plugins tels que WP-User-Frontend permettent de poster à partir du front-end mais ne fonctionnent qu'avec des articles de blog.

Existe-t-il des moyens ou des plugins similaires à wp-user-frotend, mais permettant d'ajouter des éléments de type publication personnalisés?

2
Sze Chuan

Si vous êtes prêt à payer pour cela, le plug-in Gravity Forms vous permet de créer des formulaires qui correspondent à vos types de publication personnalisés (même les types de publication et de page classiques), ainsi que de vos champs personnalisés.

Pour ceux qui ne le sont pas et qui sont prêts à se retrousser les manches, vous pouvez créer assez facilement un formulaire frontal qui publie les données dans le type de message de votre choix.

Voici un exemple de base;

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);

}

Votre formulaire HTML ressemblerait à quelque chose de similaire;

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

Vous pouvez placer tout cela dans votre fichier de modèle de thème. Normalement, je voudrais aller un peu plus loin et exécuter la logique de traitement (PHP) à partir d'une fonction de mon functions.php accrochée à une action, mais cela fonctionnera également dans un fichier de thème.

Ceci est uniquement destiné à être un exemple de base et ne contient aucune vérification/validation d'erreurs grave . Cependant, cela vous donne le cadre essentiel pour ce que vous devez publier du début à la fin de vos types d'articles.

Il existe également de nombreux tutoriels qui développent le sujet sur WPSE. Si vous effectuez une recherche, vous trouverez une mine d'informations.

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>

essayez ceci cela vous aidera ..! Aakib :)

0
Aakib