我需要为客户端创建一个自定义WordPress管理界面。我想从管理区域完全禁用粘性帖子功能。
我在互联网上找到一些帖子,建议使用css隐藏复选框,但我真的想从编辑和快速编辑屏幕中禁用该功能。
有什么想法吗?
我需要为客户端创建一个自定义WordPress管理界面。我想从管理区域完全禁用粘性帖子功能。
我在互联网上找到一些帖子,建议使用css隐藏复选框,但我真的想从编辑和快速编辑屏幕中禁用该功能。
有什么想法吗?
除了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
帖子类型,在许多情况下可能不适合,可能需要对您的站点进行进一步调整。您可以添加以下代码:
// 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
}
这对我很有用。最好、最理想的解决方案是简单地“忽略”所有查询上的粘性帖子,这可以通过以下代码完成:
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?/** * Add the suggested privacy policy text to the policy postbox. * * @since 4.9.6 */ public static function add_suggested_content() { $content = self::get_default_content( true ); wp_ad