查找空页或少于x个字符的页

时间:2015-10-29 作者:kali

在批量导入之后,我意识到我有相当多的页面内容为空,或者少于100个字符。我想删除它们,但我找不到任何插件来找到它们。你知道我该怎么做吗?也许是通过phpmyadmin?

1 个回复
最合适的回答,由SO网友:birgire 整理而成

这里有一种方法:

扩展post list表,假设我们要针对post 岗位类型。

我们追求的用户界面如下:

posts

我们可以简单地按帖子内容长度排序,然后使用批量功能删除空帖子。

我们可以通过四个步骤实现这一目标:

步骤#1

在标题列旁边添加长度列:

add_filter(\'manage_post_posts_columns\', function ( $columns ) 
{
    $_columns = [];

    foreach( (array) $columns as $key => $label )
    {
        $_columns[$key] = $label; 
        if( \'title\' === $key )
            $_columns[\'wpse_post_content_length\'] = __( \'Length\' );     
    }
    return $_columns;
} );
步骤2用post内容长度值填充该列:

add_action( \'manage_post_posts_custom_column\', function ( $column_name, $post_id ) 
{
    if ( $column_name == \'wpse_post_content_length\')
        echo mb_strlen( get_post( $post_id )->post_content );

}, 10, 2 );
步骤3使列的长度可排序:

add_filter( \'manage_edit-post_sortable_columns\', function ( $columns ) 
{
  $columns[\'wpse_post_content_length\'] = \'wpse_post_content_length\';
  return $columns;
} );
最后,我们通过posts_orderby 过滤器:

add_filter( \'posts_orderby\', function( $orderby, \\WP_Query $q )
{
    $_orderby = $q->get( \'orderby\' );
    $_order   = $q->get( \'order\' );

    if( 
           is_admin() 
        && $q->is_main_query() 
        && \'wpse_post_content_length\' === $_orderby 
        && in_array( strtolower( $_order ), [ \'asc\', \'desc\' ] )
    ) {
        global $wpdb;
        $orderby = " LENGTH( {$wpdb->posts}.post_content ) " . $_order . " ";
    }
    return $orderby;
}, 10, 2 );
如果您想针对其他帖子类型,我们只需修改

manage_post_posts_columns         -> manage_{POST_TYPE}_posts_columns
manage_post_posts_custom_column   -> manage_{POST_TYPE}_posts_custom_column
manage_edit-post_sortable_columns -> manage_edit-{POST_TYPE}_sortable_columns
在哪里POST_TYPE 是通缉职位类型。

相关推荐

Read_Private_Pages功能不适用于新角色

我已经创建了一个新的用户角色-供应商-能够read_private_pages, 但当我以这样的用户身份登录并转到一个私人页面时,我看不到它。以下是我的插件代码:function fc_add_role($role, $display_name, $capabilities = array()) { if (!empty($role)) { return wp_roles()->add_role( $role, $display_name, $capabili