web-dev-qa-db-fra.com

Désactiver la fonctionnalité de post-it

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?

3
MKay

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.

2
birgire

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?

0
WPExplorer

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.

0
rudtek