首先解释一下何为ACF,ACF是 WordPress › Advanced Custom Fields 插件的缩写,利用这个插件可以打造一个超级强大的文章自定义字段扩展,具体强大到什么程度,大家可以下载该插件试用一下就知道了,下载地址如下:

http://wordpress.org/extend/plugins/advanced-custom-fields/

本教程主要讲述如何用ACF构造的多个自定义字段的值作为搜索条件,进而打造一个超级的搜索表单,是否听起来很有意思,岂止有意思,结局会令你无比惊喜,好了废话少说,言归正传。

首先利用ACF打造的自定义字段的内容直接通过WordPress自带的搜索是索引不到的,在这里,小小鄙视一下WordPress自带的无比简陋的搜索功能,当然我们可以通过其他的方式比如安装一些类似“Search everything”之类很强大的WordPress插件也可以索引到这些内容,或者比如直接加载Super强大的Google Custom Search,不过类似的方案都是采用索引的方式,搜索出来的格式很难自定义,也很难筛选搜索出来的结果的唯一匹配性,简而言之就是会索引出不想要的东东,或者通俗点说就是会搜索的范围太广了,而刚好比如客户只想要一个精确的匹配功能用来索引订单之类的时候,这些就不适合了,于是转而想到了强大的WordPress的query_posts功能,经过几个小时的调试终于完美搞定了这个搜索匹配功能,事实上代码还是挺简单的,不敢独享贴出来与大家一起分享:

<?php
        $search_args = array(
			'post_type' => 'post',
			'posts_per_page' => '1',
			'meta_query' => array(
				array(
					'key' => 'key1',
					'value' => $_GET['key1_value'],
					'compare' => 'in'
				),
				array(
					'key' => 'key2',
					'value' => $_GET['key2_value'],
					'compare' => 'in'
				)
			)
		 );
		query_posts($search_args);
        if (have_posts() && $_GET['key1_value'] && $_GET['key2_value']) :
?>
                              
		<?php while (have_posts()) : the_post(); ?>
			<?php the_content(); ?>
		<?php endwhile; ?>
	<?php else : ?>
		<div><h3><?php _e('没有找到相关订单。试试其它搜索?', 'eastern-studio'); ?></h3></div>
	<?php endif; ?>

以上仅仅贴出来了核心搜索实现的代码,其他表单提交之类的代码相信实现起来很简单,我这里就不再一一展示代码了,当然类似的教程其实更多的是一个抱砖引玉的效果,给大家一个思路,让大家对WordPress强大的扩展性有一个更深入的了解。

另外因为写这个教程而发生的一个小插曲在这里简单描述一下,之前因为写的教程大部分都是centos有关的教程,基本不涉及php代码,今天这个教程因为需要在文章里边插入Php代码,因此导致页面无法正常显示,于是不得不加载了一个Crayon Syntax Highlighter插件,不过无意中发现这个插件的语法高亮效果非常漂亮,也算是无心栽柳吧,暂写这么多,余言后续!