2013-02-18 25 views
5

在管理面板的媒體 - >媒體庫中,如何在「搜索媒體」框中搜索文件名爲的媒體文件?按媒體庫中的文件名搜索

我知道文件名被放置在數據庫的「GUID」列中,但我不知道在哪裏可以找到負責媒體搜索的代碼段,例如。 MySQL select

現在它只在post_title列中搜索。我也試圖找到$_REQUEST['s'],但沒有結果。

回答

11

我發現了一個解決方案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; 
} 

有一個建議,我需要驗證,但似乎不錯:

變化$_GET['s']$a_wp_query->query_vars['s'],使這也適用時搜索功能是通過一個Ajax POST調用,例如,當使用「創建圖庫」對話框。

+0

工程很好。 只需將它放在主題目錄中的'functions.php'中即可。 謝謝! – 2013-02-26 13:50:09

+5

@ Arek-Krakiewicz.pl,最好[創建你自己的插件](http://wordpress.stackexchange.com/q/72160/12615);) – brasofilo 2013-02-26 13:57:08

+0

目前爲止的整潔解決方案。但請注意,通過查找「guid」值來擴展媒體搜索,通過deafult是post條目的URL(分別是文件)。因此,如果假設您的域是_example.com_,並且您上傳的媒體文件的名稱是_example-image.jpg_,則在搜索「example」**時,您將獲得**所有文件**作爲結果**。 – Arvid 2016-04-29 15:09:09