在admin中按ID搜索帖子


10

我正在寻找一种通过ID搜索帖子的方法,最好是支持自定义帖子类型。我希望有一个启用此功能的插件,但找不到任何东西。任何想法将不胜感激,谢谢。


您能否解释一下按ID进行搜索的意思,每个帖子都有一个唯一的ID,这种搜索可能会产生比单个结果更多的结果吗?
t31os 2011年

@ t31os一个结果就是我想要的:)。我指的是能够通过管理员后端中的ID查找帖子。如果您转到domain.com/wp-admin/edit.php,则顶部会出现一个搜索字段,您可以通过搜索帖子标题轻松找到该帖子。我需要能够执行相同操作,但要使用ID。说,输入“ 1343”,按“搜索”,获取帖子#1343。
pereyra 2011年

前端搜索如何工作?
克里斯波

Answers:


13

不确定我是否理解为什么要按ID查询,但这表示可能以一种怪异的方式(我喜欢这种方法,因为它很简单)。

add_action( 'parse_request', 'idsearch' );
function idsearch( $wp ) {
    global $pagenow;

    // If it's not the post listing return
    if( 'edit.php' != $pagenow )
        return;

    // If it's not a search return
    if( !isset( $wp->query_vars['s'] ) )
        return;

    // If it's a search but there's no prefix, return
    if( '#' != substr( $wp->query_vars['s'], 0, 1 ) )
        return;

    // Validate the numeric value
    $id = absint( substr( $wp->query_vars['s'], 1 ) );
    if( !$id )
        return; // Return if no ID, absint returns 0 for invalid values

    // If we reach here, all criteria is fulfilled, unset search and select by ID instead
    unset( $wp->query_vars['s'] );
    $wp->query_vars['p'] = $id;
}

您要做的就是在常规搜索框中使用#数字ID前面的(哈希)前缀进行搜索。

#123

..将返回ID为123的帖子。

我敢肯定,可以采取更复杂的方法来做到这一点,但是我看不到这种方法有任何问题,除非您有很多帖子的标题都以哈希开头(但是您始终可以将哈希替换为另一个字符)。

希望能有所帮助。:)


@ t310s这个有效,非常感谢!我遇到的唯一(尽管纯粹是表面上的)问题是,我在搜索结果的顶部:“”的搜索结果-而“#123”的搜索结果将是理想选择。否则,这正是我所需要的,再次感谢。
pereyra 2011年

这仅仅是查询之前取消设置搜索条件的不幸的副作用,但现在我已经不得不重新审视edit.php我可以看到一个简单的办法... :)更新unset()调用下面.. unset( $wp->query_vars['s'], $_GET['s'] );和搜索进行ID搜索时,术语文本将消失
。.ps

今天很晚,但我偶然发现了这篇文章,可以通过连接到get_search_query过滤器来重新填充...的搜索结果。add_filter( 'get_search_query', function() { return $_GET['s']; } );
迈克
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.