Search by Attachment ID

时间:2016-04-11 作者:palekjram

我正在为我的公司建立一个股票照片页面,我们上传员工创建的所有照片,以便以后使用。它通过post->ID显示图像的ID,以便用户可以查看、记录并在以后使用-就像其他股票照片网站一样。

然而,当我尝试使用ID并在搜索字段中搜索它时,什么都没有出来。我正在使用SearchEverything插件,但它似乎什么都没做。所有其他ID搜索插件仅适用于帖子,而不适用于附件(图像)。

那么,是否有任何插件可以使用,或者是否需要在函数中添加脚本。php?

1 个回复
最合适的回答,由SO网友:Luis Sanz 整理而成

这个WP_Query 类可以匹配ID和搜索词。一个想法是使用pre_get_posts 用于检测搜索词是否为数字的操作,如果是,则将查询设置为使用附件,同时将搜索作为ID传递。

function wpse223307_allow_search_by_attachment_id( $query ) {

    //Only alter the query if we are in a search screen,...
    if( ! is_search() ) :
        return;
    endif;

    //...the search term has been set...
    if( ! isset( $query->query_vars[\'s\'] ) ) :
        return;
    endif;

    $search_term = $query->query_vars[\'s\'];

    //...and the search term is a number
    if( ! is_numeric( $search_term ) ) :
        return;
    endif;

    //Set the post type and post status to work with attachments (assuming you want to exclude other post types in numeric searches)
    $query->set( \'post_type\', array( \'attachment\' ) );
    $query->set( \'post_status\', array( \'inherit\' ) );

    //Match the search term with the attachment\'s ID and remove it from the query
    $query->set( \'p\', $search_term );
    $query->set( \'s\', \'\' );

}

add_action( \'pre_get_posts\', \'wpse223307_allow_search_by_attachment_id\');