Wordpress créer un nouveau statut de poste? [fermé]
Question
Dans Wordpress vous obtenez les statuts post par défaut: Publication, Projet et en attente d'examen. Est-il possible d'ajouter certains types plus les postes via l'enregistrement via le fichier function.php du thème actif?
Aussi est-il possible d'éditer les lables de la publication Meta Box? Ce que je vous soumets a vraiment pas d'édition ...
aussi ajouter que je ne veux que ces modifications effectuées lorsque dans mon type de poste personnalisé, je l'ai fait.
Cordialement
Scott
La solution
Depuis WP 3.0, vous pouvez utiliser la fonction register_post_status () ( http: // hitchhackerguide. com / 2011/02/12 / register_post_status / ) pour ajouter de nouveaux statuts à un type poste.
WP lui-même utilise register_post_status () pour enregistrer la valeur par défaut "publié", "projet", etc. statuts sur init à l'aide des create_initial_post_types () dans wp-includes / post.php ( http://hitchhackerguide.com/2011/02/11/create_initial_post_types/ ).
Regardez le code dans ces liens, et vous pouvez avoir une idée de la façon d'utiliser la fonction.
J'espère que vous aide à démarrer!
Autres conseils
Vous pouvez écrire un plug-in si vous savez comment. Vous devez creuser dans la documentation ou des plugins similaires comme celui-ci http://wordpress.org/extend / plugins / modifier flux / ou celui-ci http: // wordpress.org/extend/plugins/custom-post-type-ui/
Avec "crochets, actions et filtres" vous pouvez changer l'interface d'administration, voir ici http: //codex.wordpress .org / Plugin_API
Jusqu'à présent, j'ai juste écrire un plug-in simple et je ne sais pas les étapes que vous devez suivre pour y arriver ...
Bonne chance!
Vous pouvez ajouter le statut de poste personnalisé en utilisant la fonction register_post_status. Se reporter à create_initial_post_types () dans http: // noyau .trac.wordpress.org / navigateur / tags / 3.2.1 / wp-includes / post.php
Soyez averti cependant, que ce ne soit pas intégré dans le back-end Wordpress interface utilisateur.
/**
* PostStatusExtender
*
* @author Hyyan Abo Fakher<hyyanaf@gmail.com>
*/
class PostStatusExtender
{
/**
* Extend
*
* Extend the current status list for the given post type
*
* @global \WP_POST $post
*
* @param string $postType the post type name , ex: product
* @param array $states array of states where key is the id(state id) and value
* is the state array
*/
public static function extend($postType, $states)
{
foreach ($states as $id => $state) {
register_post_status($id, $state);
}
add_action('admin_footer-post.php', function() use($postType, $states) {
global $post;
if (!$post || $post->post_type !== $postType) {
return false;
}
foreach ($states as $id => $state) {
printf(
'<script>'
. 'jQuery(document).ready(function($){'
. ' $("select#post_status").append("<option value=\"%s\" %s>%s</option>");'
. ' $("a.save-post-status").on("click",function(e){'
. ' e.preventDefault();'
. ' var value = $("select#post_status").val();'
. ' $("select#post_status").value = value;'
. ' $("select#post_status option").removeAttr("selected", true);'
. ' $("select#post_status option[value=\'"+value+"\']").attr("selected", true)'
. ' });'
. '});'
. '</script>'
, $id
, $post->post_status !== $id ? '' : 'selected=\"selected\"'
, $state['label']
);
if ($post->post_status === $id) {
printf(
'<script>'
. 'jQuery(document).ready(function($){'
. ' $(".misc-pub-section #post-status-display").text("%s");'
. '});'
. '</script>'
, $state['label']
);
}
}
});
add_action('admin_footer-edit.php', function() use($states, $postType) {
global $post;
if (!$post || $post->post_type !== $postType) {
return false;
}
foreach ($states as $id => $state) {
printf(
'<script>'
. 'jQuery(document).ready(function($){'
. " $('select[name=\"_status\"]' ).append( '<option value=\"%s\">%s</option>' );"
. '});'
. '</script>'
, $id
, $state['label']
);
}
});
add_filter('display_post_states', function($states, $post) use($states, $postType) {
foreach ($states as $id => $state) {
if ($post->post_type == $postType && $post->post_status === $id) {
return array($state['label']);
} else {
if (array_key_exists($id, $states)) {
unset($states[$id]);
}
}
}
return $states;
}, 10, 2);
}
}
Et ici comment utiliser il
add_action('init', function() {
PostStatusExtender::extend(self::NAME, array(
'sold' => array(
'label' => __('Sold', 'viasit'),
'public' => true,
'exclude_from_search' => true,
'show_in_admin_all_list' => true,
'show_in_admin_status_list' => true,
'label_count' => _n_noop('Sold <span class="count">(%s)</span>', 'Sold <span class="count">(%s)</span>'),
)
));
});
Edit:. typo fixe dans le code