管理パネル内の [メディア] -> [ライブラリ] の [メディアの検索] ボックスで、メディア ファイルをファイル名で検索する方法を教えてください。
ファイル名がデータベースの「GUID」列に配置されていることは知っていますが、メディア検索を担当するコードがどこにあるのかわかりません。MySQL select
.
これで、列のみが検索されpost_title
ます。も見つけようとしましたが$_REQUEST['s']
、結果はありませんでした。
管理パネル内の [メディア] -> [ライブラリ] の [メディアの検索] ボックスで、メディア ファイルをファイル名で検索する方法を教えてください。
ファイル名がデータベースの「GUID」列に配置されていることは知っていますが、メディア検索を担当するコードがどこにあるのかわかりません。MySQL select
.
これで、列のみが検索されpost_title
ます。も見つけようとしましたが$_REQUEST['s']
、結果はありませんでした。
WordPress Developers #45153で解決策を見つけましたが、関連するすべての Q&A を以下に示します。
add_filter( 'posts_search', 'guid_search_so_14940004', 10, 2 );
function guid_search_so_14940004( $search, $a_wp_query )
{
global $wpdb, $pagenow;
// Only Admin side && Only Media Library page
if ( !is_admin() && 'upload.php' != $pagenow )
return $search;
// Original search string:
// AND (((wp_posts.post_title LIKE '%search-string%') OR (wp_posts.post_content LIKE '%search-string%')))
$search = str_replace(
'AND ((',
'AND (((' . $wpdb->prefix . 'posts.guid LIKE \'%' . $_GET['s'] . '%\') OR ',
$search
);
return $search;
}
検証する必要があるという提案がありましたが、良さそうです:
「Create Gallery」ダイアログを使用する場合など、検索機能が ajax POST 経由で呼び出された場合にも機能するように変更
$_GET['s']
します。$a_wp_query->query_vars['s']