<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>custom post | Undisconnected</title>
	<atom:link href="https://undisconnected.com/tag/custom-post/feed/" rel="self" type="application/rss+xml" />
	<link>https://undisconnected.com</link>
	<description>Reste connecté</description>
	<lastBuildDate>Tue, 03 Apr 2012 03:56:44 +0000</lastBuildDate>
	<language>fr-FR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0</generator>
	<item>
		<title>Les « Custom Post » de WordPress</title>
		<link>https://undisconnected.com/les-custom-post-de-wordpress/</link>
					<comments>https://undisconnected.com/les-custom-post-de-wordpress/#respond</comments>
		
		<dc:creator><![CDATA[Imatt]]></dc:creator>
		<pubDate>Tue, 03 Apr 2012 08:04:41 +0000</pubDate>
				<category><![CDATA[Développement]]></category>
		<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[custom post]]></category>
		<category><![CDATA[wordpress]]></category>
		<guid isPermaLink="false">https://undisconnected.com/?p=1359</guid>

					<description><![CDATA[<p>Comment transformer votre WordPress en un puissant CMS ? Voici le but de ce post ! Nous allons utiliser une fonctionnalité appelée Custom Post. Qu&#8217;est qu&#8217;un Custom Post ?  Il s&#8217;agit de créer un nouveau type de post avec des champs personnalisés pour répondre à vos besoins. Par exemple on va pouvoir ajouter une rubrique [&#8230;]</p>
The post <a href="https://undisconnected.com/les-custom-post-de-wordpress/">Les « Custom Post » de WordPress</a> first appeared on <a href="https://undisconnected.com">Undisconnected</a>.]]></description>
										<content:encoded><![CDATA[<p>Comment transformer votre WordPress en un puissant CMS ? Voici le but de ce post ! Nous allons utiliser une fonctionnalité appelée Custom Post. Qu&rsquo;est qu&rsquo;un Custom Post ?  Il s&rsquo;agit de créer un nouveau type de post avec des champs personnalisés pour répondre à vos besoins. Par exemple on va pouvoir ajouter une rubrique Portfolio, Clients, Projets, Recettes &#8230;</p>
<h2>Comment mettre en place les Custom Post</h2>
<p>La plupart de ce que l&rsquo;on va faire se fait dans le fichier function.php (à la racine de votre thème). Pour notre exemple nous allons créer un nouveau type de posts Projets avec 2 champs personnalisés : Ville et Pays.</p>
<h3>Déclaration du Custom Post</h3>
<p>Pour commencer on va dire à WordPress que nous souhaitons créer un nouveau type de post. Voici le codex de wordpress qui explique les différents arguments que l&rsquo;on peut passer à cette fonction : <a href="http://codex.wordpress.org/Function_Reference/register_post_type">register_post_type</a></p>
<pre class="brush: php; gutter: true">register_post_type(&#039;projet&#039;, array(
  &#039;label&#039; =&amp;gt; __(&#039;Projets&#039;),
  &#039;singular_label&#039; =&amp;gt; __(&#039;Projet&#039;),
  &#039;public&#039; =&amp;gt; true,
  &#039;show_ui&#039; =&amp;gt; true,
  &#039;capability_type&#039; =&amp;gt; &#039;post&#039;,
  &#039;hierarchical&#039; =&amp;gt; false,
  &#039;supports&#039; =&amp;gt; array(&#039;title&#039;, &#039;author&#039;, &#039;thumbnail&#039;)
));</pre>
<h3>Création des champs personnalisés</h3>
<p>Lorsqu&rsquo;on crée un type de post, on peut aussi y ajouter différents champs personnalisés pour ce type de post. Dans notre cas, on veut ajouter Ville et Pays qui définiront un projet<em>. </em>Je vous laisse regarder les paramètres de la fonction <a href="http://codex.wordpress.org/Function_Reference/add_meta_box">add_meta_box</a>.</p>
<p><em>La description, le titre et le thumbnail sont ajoutés lors de la déclaration de notre nouveau type de post (paramètre supports)</em></p>
<pre class="brush: php; gutter: true">function admin_init(){
  add_meta_box(&quot;city_projet&quot;, &quot;Ville du projet&quot;, &quot;city_projet&quot;,   &quot;projet&quot;, &quot;normal&quot;, &quot;high&quot;);
  add_meta_box(&quot;country_projet&quot;, &quot;Pays du projet&quot;, &quot;country_projet&quot;, &quot;projet&quot;, &quot;normal&quot;, &quot;high&quot;);
}</pre>
<h3>Définition des champs personnalisés</h3>
<p>Ici on va déterminer le type d&rsquo;affichage que l&rsquo;on veut pour nos champs personnalisés dans le panneau d&rsquo;admin. On peut alors définir le type de champ dans le formulaire input text, textarea, select &#8230;</p>
<pre class="brush: php; gutter: true">function city_projet(){
 global $post;
 $custom = get_post_custom($post-&gt;ID);
 $city_projet = $custom[&quot;city_projet&quot;][0];
?&gt;
 &lt;input size=&quot;70&quot; type=&quot;text&quot; value=&quot;&lt;?php echo $city_projet;?&gt;&quot; name=&quot;city_projet&quot;/&gt;
&lt;?php
}

function country_projet(){
 global $post;
 $custom = get_post_custom($post-&gt;ID);
 $country_projet = $custom[&quot;country_projet&quot;][0];
?&gt;
 &lt;input size=&quot;70&quot; type=&quot;text&quot; value=&quot;&lt;?php echo $country_projet;?&gt;&quot; name=&quot;country_projet&quot;/&gt;
&lt;?php
}</pre>
<h3>Fonction de sauvegarde des champs personnalisés</h3>
<p>Il faut ensuite créer les fonctions qui vont permettre la sauvegarde en base de données des champs personnalisés. En gros quelles actions veut-on entreprendre lorsque l&rsquo;on clique sur Save Draft / Publier ou aussi lors de la sauvegarde automatique.</p>
<pre class="brush: php; gutter: true">function save_custom_projet(){
 global $post;
 if (defined(&#039;DOING_AUTOSAVE&#039;) &amp;&amp; DOING_AUTOSAVE) {
 	 return $postID;
 }
 update_post_meta($post-&gt;ID, &quot;url_projet&quot;, $_POST[&quot;url_projet&quot;]); //enregistrement dans la base de données
 update_post_meta($post-&gt;ID, &quot;country_projet&quot;, $_POST[&quot;country_projet&quot;]);
 update_post_meta($post-&gt;ID, &quot;city_projet&quot;, $_POST[&quot;city_projet&quot;]);
}</pre>
<h3>On met le tout en action</h3>
<p>La dernière étape consiste à appeler les fonctions que l&rsquo;on vient de créer plus haut. Sans cela, rien ne se passera et votre nouveau « Custom Post » ne fonctionnera pas correctement.</p>
<pre class="brush: php; gutter: true">add_action(&quot;admin_init&quot;, &quot;admin_init&quot;);
add_action(&#039;save_post&#039;, &#039;save_custom_projet&#039;);</pre>
<p>Voici le résultat en image</p>
<p><a href="https://undisconnected.com/wp-content/uploads/2012/04/custom-post.jpg"><img fetchpriority="high" decoding="async" class="alignnone size-full wp-image-1551" title="custom-post" src="https://undisconnected.com/wp-content/uploads/2012/04/custom-post.jpg" alt="" width="600" height="349" srcset="https://undisconnected.com/wp-content/uploads/2012/04/custom-post.jpg 600w, https://undisconnected.com/wp-content/uploads/2012/04/custom-post-300x174.jpg 300w, https://undisconnected.com/wp-content/uploads/2012/04/custom-post-500x290.jpg 500w" sizes="(max-width: 600px) 100vw, 600px" /></a></p>
<h2>Conclusion</h2>
<p>Cette nouvelle fonctionnalité de WordPress (ajouté à la version 3) permet concrètement de tourner WordPress en un CMS puissant et malléable.</p>
<p>Si vous avez des questions, n&rsquo;hésitez pas, j&rsquo;essayerais d&rsquo;y répondre au maximum de mes connaissances.</p>The post <a href="https://undisconnected.com/les-custom-post-de-wordpress/">Les « Custom Post » de WordPress</a> first appeared on <a href="https://undisconnected.com">Undisconnected</a>.]]></content:encoded>
					
					<wfw:commentRss>https://undisconnected.com/les-custom-post-de-wordpress/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
