Php 调整wordpress搜索以搜索多个字段
我正在尝试调整现有的搜索,以便不仅可以搜索员工姓名,还可以搜索他们的头衔(工作角色) 目前,以下是表单方法:Php 调整wordpress搜索以搜索多个字段,php,wordpress,Php,Wordpress,我正在尝试调整现有的搜索,以便不仅可以搜索员工姓名,还可以搜索他们的头衔(工作角色) 目前,以下是表单方法: <form method="get" action="<?php echo get_post_type_archive_link('staff'); ?>" class="search" data-behavior="search"> 此函数与搜索Wordpress数据库无关。相反,它是呼应出一个url,告诉表单在哪里提交。您需要了解的是表单提交到该url后会发
<form method="get" action="<?php echo get_post_type_archive_link('staff'); ?>" class="search" data-behavior="search">
此函数与搜索Wordpress数据库无关。相反,它是呼应出一个url,告诉表单在哪里提交。您需要了解的是表单提交到该url后会发生什么。有一些用于搜索的标准Wordpress函数和过滤器,但我猜根据您在这里展示的内容,代码中的某些地方也有一些自定义功能,它以某种方式使用单词“staff”执行搜索
这个函数在哪里?这是一个插件吗?主题?它还有其他功能吗?我建议在该函数的常规区域中查找一些sql查询,并将该函数粘贴到此处供我们查看。我不知道我是否理解正确,但会对标题、内容以及自定义字段(如果有)进行自定义搜索
这个函数目前做什么?我不是一个WP开发者,但我想知道,如果他们了解你所拥有的和你想要的之间的区别,他们是否会发现这个问题更容易回答。谢谢!这是问题的一部分。我最初并没有写这段代码,而写这段代码的人现在已经离开了。这个函数是与搜索操作相关的,这就是我所知道的。目前正在发生的是,页面顶部有一个搜索表单,后面是员工列表和他们个人资料的链接。我需要让它工作,以便搜索工作不仅为姓名,而且还搜索标题(工作角色),如果有人想搜索具有特定工作的所有人。我想补充一点,如果当前代码可以添加到版本控制(或至少复制)然后,您可以添加echo
语句来跟踪主题/插件等中的执行情况,直到找到搜索功能为止。那么至少你会知道该修改哪一位!
function get_post_type_archive_link( $post_type ) {
global $wp_rewrite;
if ( ! $post_type_obj = get_post_type_object( $post_type ) )
return false;
if ( ! $post_type_obj->has_archive )
return false;
if ( get_option( 'permalink_structure' ) && is_array( $post_type_obj->rewrite ) ) {
$struct = ( true === $post_type_obj->has_archive ) ? $post_type_obj->rewrite['slug'] : $post_type_obj->has_archive;
if ( $post_type_obj->rewrite['with_front'] )
$struct = $wp_rewrite->front . $struct;
else
$struct = $wp_rewrite->root . $struct;
$link = home_url( user_trailingslashit( $struct, 'post_type_archive' ) );
} else {
$link = home_url( '?post_type=' . $post_type );
}
return apply_filters( 'post_type_archive_link', $link, $post_type );
}
<?php //LOOP PARA BUSCA COM TODOS CUSTOM FIELD
$keyword = get_search_query();
$keyword = '%' . like_escape( $keyword ) . '%'; // Thanks Manny Fleurmond
// SEARCH FROM ALL CUSTOM FIELDS
$post_ids_meta = $wpdb->get_col( $wpdb->prepare( "
ALTER TABLE wp_posts ADD INDEX (postmeta)
SELECT DISTINCT post_id FROM {$wpdb->postmeta}
WHERE meta_value LIKE '%s'
", $keyword ) );
// SEARCH FOR TITLE AND CONTENT
$post_ids_post = $wpdb->get_col( $wpdb->prepare( "
ALTER TABLE wp_post s ADD INDEX (posts);
SELECT DISTINCT ID FROM {$wpdb->posts}
WHERE post_title LIKE '%s'
OR post_content LIKE '%s'
", $keyword, $keyword ) );
$post_ids = array_merge( $post_ids_meta, $post_ids_post );
$wpq = array(
'taxonomy'=>'segmento',
'post_status' => 'publish',
'post_type' => 'CUSTOM-POST-TYPE',
'paged' => get_query_var('paged'),
'post__in' => $post_ids,
'order' => 'ASC',
);
query_posts($wpq);