管理者のIDで投稿を検索


10

IDで投稿を検索する方法を探しています。できれば、カスタム投稿タイプをサポートしています。この機能を有効にするプラグインがあることを望んでいましたが、何も見つかりませんでした。どんなアイデアでも大歓迎です、ありがとう。


IDによる検索の意味を説明できますか。すべての投稿に一意のIDがあります。この検索で​​1つ以上の結果が得られる可能性があるのはなぜですか。
t31os

@ t31os単一の結果が私が欲しいものです:)。管理バックエンドでIDで投稿を検索できることを指します。domain.com/wp-admin/edit.phpにアクセスすると、上部に検索フィールドがあり、投稿のタイトルを検索することで簡単に投稿を見つけることができます。同じことをする必要がありますが、IDを使用します。たとえば、「1343」と入力して「検索」を押し、投稿#1343を取得してください。
ペレイラ

フロントエンド検索ではどのように機能しますか?
chrispo

回答:


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

それはちょうど、クエリの前に検索語を設定解除の不幸な副作用ですが、今、私は簡単に修正を見ることができます个人设定で別の顔を持っていた... :)更新unset()以下の呼び出し... unset( $wp->query_vars['s'], $_GET['s'] );と検索ID検索を実行すると、用語のテキストが消えます.. ps喜んでお手伝いします.. :)
t31os

非常に遅いですが、この投稿を偶然見つけましたget_search_query。フィルターにフックすることで、検索結果を再入力することができます。add_filter( 'get_search_query', function() { return $_GET['s']; } );
マイク
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.