Disable sticky posts feature

时间:2017-03-03 作者:MKay

我需要为客户端创建一个自定义WordPress管理界面。我想从管理区域完全禁用粘性帖子功能。

我在互联网上找到一些帖子,建议使用css隐藏复选框,但我真的想从编辑和快速编辑屏幕中禁用该功能。

有什么想法吗?

3 个回复
SO网友:birgire

除了CSS之外,您还可以尝试在每个帖子变得粘滞(未测试)后立即解除粘滞:

add_action( \'post_stuck\', function( $post_id )
{
    unstick_post( $post_id );
} );
如果您正在寻找另一种方法,而不是使用CSS在UI中隐藏它,那么请考虑使用custom post types 而不是post 岗位类型。

据我所知,只有post 岗位类型。至少快速查看一下posts list table类,会显示如下检查:

if ( \'post\' === $post_type && $sticky_posts = get_option( \'sticky_posts\' ) ) {
但不使用post 帖子类型,在许多情况下可能不适合,可能需要对您的站点进行进一步调整。

SO网友:rudtek

您可以添加以下代码:

// 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
}
这对我很有用。

SO网友:WPExplorer

最好、最理想的解决方案是简单地“忽略”所有查询上的粘性帖子,这可以通过以下代码完成:

add_filter( \'pre_get_posts\', function( $query ) {
    if ( ! is_admin() && $query->is_main_query() ) {
        $query->set( \'ignore_sticky_posts\', 1 );
    }
} );
当然,用户仍然可以单击复选框,但它实际上不会做任何事情,所以这无关紧要。但这里有一篇很好的文章,展示了如果需要,如何使用CSS隐藏-Is there a way to disable the sticky posts feature?