php – 将结果添加到WordPress搜索结果中
发布时间:2020-12-13 17:47:21 所属栏目:PHP教程 来源:网络整理
导读:我想在WordPress搜索结果中添加/注入/追加额外的结果. 目前WordPress只允许您“调整”在其自己的数据库上执行的查询,但不允许您修改(或在WordPress术语中,过滤)结果数组. 即:如果在WordPress中我搜索“马铃薯”一词,所有与此术语相关的帖子都会回来.我想将
我想在WordPress搜索结果中添加/注入/追加额外的结果.
目前WordPress只允许您“调整”在其自己的数据库上执行的查询,但不允许您修改(或在WordPress术语中,过滤)结果数组. 即:如果在WordPress中我搜索“马铃薯”一词,所有与此术语相关的帖子都会回来.我想将通过不同服务获得的结果包含在WordPress结果集中. 只是为了澄清,我从第三方API调用中得到了我的结果.不是来自WordPress数据库. 有没有人知道如何做到这一点? 编辑:最好这需要在我的WordPress插件中进行,而无需更改搜索模板. 解决方法
您可以使用pre_get_posts添加/编辑搜索结果,而无需更改搜索模板.
排除页面 排除搜索结果中的网页.可以通过仅显示帖子的结果来创建限制搜索结果的操作挂钩. 以下示例演示了如何执行此操作: function search_filter($query) { if ( !is_admin() && $query->is_main_query() ) { if ($query->is_search) { $query->set('post_type','post'); } } } add_action('pre_get_posts','search_filter'); 在搜索结果中包含自定义帖子类型 function search_filter($query) { if ( !is_admin() && $query->is_main_query() ) { if ($query->is_search) { $query->set('post_type',array( 'post','movie' ) ); } } } add_action('pre_get_posts','search_filter'); 包括自定义/ API结果 function search_filter() { if ( is_search() ) { // Do your API call here // Save retrieved data in your wordpress // This will also help to you avoid api call for repeated queries. $post_id = wp_insert_post( $post,$wp_error ); // wp_insert_post() // Programatically insert queries result into your wordpress database array_push( $query->api,$post_id ); } } add_action('pre_get_posts','search_filter'); function have_posts_override(){ if ( is_search() ) { global $wp_query; $api_post = $wp_query->api; foreach ($api_post as $key) { // This will enable you to add results you received using API call // into default search results. array_push($wp_query->posts,$key); } } } add_action( 'found_posts','have_posts_override' ); 参考: > Exclude_Pages_from_Search_Results (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |