Je dois créer une interface d'administration WordPress personnalisée pour un client. Je veux désactiver complètement la fonctionnalité post-message de la zone d'administration.
J'ai trouvé des publications sur Internet qui suggèrent de masquer la case à cocher à l'aide de CSS, mais j'aimerais vraiment désactiver cette fonctionnalité à la fois pour l'édition et pour l'écran de modification rapide.
Des idées?
En plus de CSS, vous pouvez essayer de décoller chaque message dès qu'il a été collé (non testé):
add_action( 'post_stuck', function( $post_id )
{
unstick_post( $post_id );
} );
Si vous recherchez une autre approche que de la masquer de l'interface utilisateur avec CSS, envisagez d'utiliser types de publication personnalisés} au lieu du type de publication post
.
Autant que je me souvienne, la fonctionnalité sticky UI n'est prise en charge que par le type de message post
. Au moins, un rapide coup d’œil à la classe de la table des listes de posts montre une vérification comme celle-ci:
if ( 'post' === $post_type && $sticky_posts = get_option( 'sticky_posts' ) ) {
Cependant, ne pas utiliser le type de message post
, pourrait ne pas convenir dans de nombreux cas et nécessiter des ajustements supplémentaires pour votre site.
La meilleure solution et la plus optimale consiste simplement à "ignorer" les posts collants sur toutes les requêtes pouvant être effectuées avec ce code:
add_filter( 'pre_get_posts', function( $query ) {
if ( ! is_admin() && $query->is_main_query() ) {
$query->set( 'ignore_sticky_posts', 1 );
}
} );
Bien sûr, l'utilisateur peut toujours cliquer sur la case à cocher, mais comme cela ne fera rien, cela n'aura pas d'importance. Mais voici un bon article montrant comment se cacher avec CSS si désiré - Y at-il un moyen de désactiver la fonctionnalité de post-it?
vous pouvez ajouter ce code:
// Hide sticky posts
add_action( 'admin_print_styles', 'hide_sticky_option' );
function hide_sticky_option() {
global $post_type, $pagenow;
if( 'post.php' != $pagenow && 'post-new.php' != $pagenow && 'edit.php' != $pagenow )
return;
?>
<style type="text/css">#sticky-span { display:none!important }
.quick-edit-row .inline-edit-col-right div.inline-edit-col > :last-child > label.alignleft:last-child{ display:none!important; }</style>
<?php
}
Cela fonctionne très bien pour moi.