问题描述

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

最佳解决方案

不知道我明白为什么你想通过 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 的帖子。

我确定有更复杂的路由可以采取这样做,但我没有看到这种方法的任何问题,除非你有很多的帖子,标题以哈希开头 (但是你总是可以交换哈希另一个角色) 。

希望有帮助。 🙂

参考文献

注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。