我们可以设置author_url
的参数WP_Comment_Query
像null
(空字符串无效)搜索没有作者url的评论。目前(4.8.1版)has_author_url
不支持。
使用子查询排除这些注释,没有author_url
, 使用comment__not_in
, 应该有效,但可能无法很好地扩展。背景fields
像ids
将减少查询数据。
或者,我们可以创建一个像这样的助手插件,以支持_has_author_url
的输入参数WP_Comment_Query
:
<?php
/**
* Plugin Name: WPSE-278861: Support for the _has_author_url WP_Comment_Query argument
*/
add_filter( \'comments_clauses\', function( Array $clauses, \\WP_Comment_Query $query ) use ( &$wpdb )
{
if( isset( $query->query_vars[\'_has_author_url\'] )
&& true === $query->query_vars[\'_has_author_url\']
)
$clauses[\'where\'] = " {$wpdb->comments}.comment_author_url != \'\' ";
return $clauses;
}, 10, 2 );
然后用它来支持
has:url
comments搜索参数,位于
edit-comments.php
屏幕:
add_action( \'pre_get_comments\', function ( \\WP_Comment_Query $query )
{
// Only target the `edit-comments.php` screen
if( ! did_action( \'load-edit-comments.php\' ) )
return;
// Only target the search comment\'s query
if( ! isset( $query->query_vars[\'search\'] ) )
return;
// Only target \'has:url\' searches
if( false === strpos( $query->query_vars[\'search\'], \'has:url\' ) )
return;
// strip \'has:url\' (I leave it as is from the OP)
$query->query_vars[\'search\'] = trim(
preg_replace(
\'!\\s+!\', \' \',
str_replace( \'has:url\', \'\', $query->query_vars[\'search\'] )
)
);
// Query for comments with an author url
$query->query_vars[\'_has_author_url\'] = true;
}, 10, 2 );
注意,我们去掉了全局变量
$onlyhasurl
和
$pagenow
.
这是未经测试的,但希望您可以根据自己的需要进行调整!