web-dev-qa-db-ja.com

スティッキーポスト機能を無効にする

クライアント用のカスタムWordPress管理インターフェースを作成する必要があります。管理領域からスティッキーポスト機能を完全に無効にしたいです。

CSSを使ってチェックボックスを隠すことを提案するインターネット上の投稿を見つけましたが、私は本当に編集とクイック編集画面の両方からその機能を無効にしたいです。

何か案は?

2
MKay

CSSに加えて、各投稿がスティッキーになった(テストされていない)とすぐにアンスティックを試みることができます。

add_action( 'post_stuck', function( $post_id )
{
    unstick_post( $post_id );
} );

CSSでUIから隠すよりも他のアプローチを探しているなら、post投稿タイプの代わりに カスタム投稿タイプ を使うことを検討してください。

私が覚えている限りでは、 sticky UI機能はpost投稿タイプでのみサポートされています。少なくとも投稿リストテーブルクラスを見ると、このようなチェックが表示されます。

if ( 'post' === $post_type && $sticky_posts = get_option( 'sticky_posts' ) ) {

しかし、投稿タイプpostを使用しないと、多くの場合に適していない場合があります。また、サイトに合わせてさらに調整が必要な場合があります。

1
birgire

最善かつ最も最適な解決策は、このコードで実行できるすべてのクエリでスティッキーポストを単に「無視」することです。

add_filter( 'pre_get_posts', function( $query ) {
    if ( ! is_admin() && $query->is_main_query() ) {
        $query->set( 'ignore_sticky_posts', 1 );
    }
} );

もちろん、ユーザーはチェックボックスをクリックすることはできますが、実際には何もしないので問題ありません。しかし、ここに欲しいならCSSで隠す方法を示す良い記事があります - スティッキーポスト機能を無効にする方法はありますか?

0
WPExplorer

あなたはこのコードを追加することができます:

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

これは私にとって素晴らしい仕事です。

0
rudtek