首页 博客 网页设计增强WordPress自定义字段搜索过滤 增强WordPress自定义字段搜索过滤 威廉·克雷格 大约10分钟阅读 WebFX总裁。Bill在互联网营销行业有超过25年的经验,专门从事SEO, UX,信息架构,营销自动化等。William在希彭斯堡和麻省理工学院的科学计算和教育背景为MarketingCloudFX和WebFX的其他关键研发项目提供了基础。 自定义字段优秀的功能在吗WordPress.它们允许你存储任何你想要的关于一篇文章的额外信息(元数据)。 当我第一次使用WordPress的时候内容管理系统,我避开了它们,因为我认为它们对最终用户(即客户端)来说很难使用,但随着我了解更多定制WordPress的管理面板,我开始意识到它们对WordPress站点来说是一个多么强大的补充。 然而,添加自定义字段搜索帖子的功能有点棘手;WordPress的本地搜索功能不搜索自定义字段值。 在本指南中,我将向您展示如何使用自定义字段,以及如何通过添加显示和过滤字段的功能使它们变得更加强大。 我们要做的是为一个组织公司创建一个非常简单的事件列表页面果冻联合办公活动,位于英国。 我们将使事件列表页按县排序。每个帖子都将是一个带有标题、描述和事件所在区域的自定义字段的事件。(或者,不使用WordPress的本地帖子帖子类型,你可以为事件创建自定义发布类型). 本指南假设您已经可以使用WordPress。 如果您想一步一步地跟随,我们鼓励您这样做在你的电脑上安装WordPress而不是使用活的/生产的WordPress实例。 在WordPress管理员中设置自定义字段 首先要做的是为每个事件设置元数据。中引入的自定义文章类型特性在这里有一个强有力的论点WordPress 3.0,但为了保持简单,我们将使用本机帖子为了表明它们是事件而不是普通的帖子,我们将它们放在一个名为“Find a Jelly”的类别中。 首先将每个事件添加为post。这取决于你WordPress主题,您还可以添加自定义缩略图和各种附加信息。 添加了标准数据并选择了正确的类别之后,向下滚动到添加新的自定义字段节的底部附近添加新职位面板。 点击输入新,给你的自定义字段一个相关的名称(在英国,这个例子将使用县作为自定义字段键,尽管它可以很容易地使用州或地区)。 这将在数据库中形成元键,所以要确保它是简单的(最好是一个词),这样代码创作就不会很麻烦。 接下来,为县自定义字段(Jelly所在的县的名称)添加一个自定义字段值。在我的例子中,值可以是萨罗普羊,贝德福德郡,北安普敦郡等等。 单击添加自定义字段按钮添加县元数据,然后更新您的帖子。 从这里开始,对于您添加的每一个额外事件,您将在自定义字段的下拉菜单中看到县自定义字段;你不必一直加进去。 在使用国家自定义字段值设置了所有事件清单之后,就可以开始使用搜索过滤功能了。 创建事件列表页面模板 开放page.php在您的主题文件夹中,并将其保存为一个新文件。在本例中,我将新页面模板称为find-jelly.php. 通过在页面顶部添加这一行来给文件一个模板名称: 模板名称:找到一个果冻 现在,当您为目录创建一个新页面时,该页将出现在可用模板列表中。 创建县过滤下拉菜单 要创建允许用户筛选结果的web表单,请将以下代码添加到find-jelly.php我们之前创建的页面模板,你想在事件列表页面中显示的下拉输入字段: get_col($wpdb->prepare("SELECT DISTINCT meta_value FROM $wpdb->postmeta WHERE meta_key = %s ORDER BY meta_value ASC", $metakey));If ($counties) {foreach ($counties as $county) {echo "<选项值=\""。县美元。“\”>”。县美元。“> < /选项”;}} ? > < /选择> < input type = " submit " value = "搜索" / > < / >形式 让我解释一下上面的代码块中发生了什么。 标记 首先,我们有一个基本的HTML表单行动属性为空,因为我们希望表单在提交时返回到相同的页面。我们设置了方法来得到这样我们就可以看到URL中的搜索条件,就像标准的WordPress搜索一样。使用得到是一个很好的触摸,允许用户分享搜索结果的链接,以及允许我们使用我们的分析软件(如谷歌Analytics)来研究热门事件搜索。 的< >形式元素包含下拉菜单(<选择>),连同<选项>元素是县。 提交按钮(< input type = " submit " >)允许提交表格;不过,使用一些JavaScript,您可以在用户选择选项时提交表单,从而省去了用户必须单击提交按钮的操作。 填充下拉菜单 代码的下一部分是比较棘手的部分;我们需要填充<选择>元素<选项>所有自定义字段值的元素。 为此,我们循环遍历数据库中县定制字段键的所有值;但是我们只想显示唯一的值,而不是它们附加到文章的每个实例。 为了做到这一切,我们使用wpdb - > get_col ().wpdb美元是一个WordPress PHP类,允许我们构建自己的SQL查询并执行其他与数据库相关的任务。的get_col ()方法wpdb美元用于在我们的WordPress数据库中选择一个特定的列。 首先,我们创建一个变量string变量metakey美元它被分配给自定义字段的名称(命名为县);这是可选的,只是让我们的代码更具可读性。 然后使用wpdb - > get_col (),我们使用WordPress的handy将SQL查询作为准备好的语句提供wpdb - >准备()方法。 这是上面的SQL查询(为了便于讨论,已经进行了重写和格式化): SELECT DISTINCT meta_value FROM $wpdb->postmeta WHERE meta_key = $metakey ORDER BY meta_value ASC 对象中的所有唯一记录meta_valueWordPress的专栏postmeta,无论meta_key等于“县”;它按字母顺序返回结果。 然后将每个结果打印为价值各属性<选项>元素。 添加表单后,您应该在页面上看到如下图所示的内容;我设计了这个页面,并添加了一个谷歌地图小部件-我们不会在这里覆盖它。 显示搜索结果 这就是搜索过滤器的实际设置;现在我们需要一些结果。 要做到这一点,我们将向find-jelly.php模板后的代码为web表单: <?php $counties = $_GET['county'];如果($counties) {$paged = (get_query_var('paged')) ?Get_query_var ('page '): 1;$ args =阵列(“猫”= > 19日“meta_value”= > $县、“分页”= > $分页,);query_posts (args);} else {query_posts('cat=19&posts_per_page=4');} if ($counties) {?> 您的搜索 < / h3 > < ?php}else { ?> Recently Added ID, 'county', true); ?> ” title=””> ” title=””> Read More Sorry no results were found 看起来这里发生了很多事情,仅仅是因为相对于第一个代码块而言,代码的剪切量很大,但实际上并没有;如果你和WordPress主题开发在此之前,上面的内容对您来说非常简单。让我们把它分解成主要的组成部分。 首先,我们设置一个变量来收集添加到页面URL的任何表单数据$ _GET []数组中。 $counties = $_GET['county']; 然后我们检查是否有任何数据被传递;如果有,我们运行一个简单的WordPress查询: 如果($counties) {$paged = (get_query_var('paged')) ?Get_query_var ('page '): 1;$ args =阵列(“猫”= > 19日“meta_value”= > $县、“分页”= > $分页,);query_posts (args);} 的美元的分页变量被包括在内,这样如果有很多结果,就可以使用标准的WordPress分页。我已经包括了“猫”参数(19是我的类别的类别ID,但你的类别可能不同),以确保只有来自找到果冻显示类别;这不是必需的,但这是一种额外的容错措施,以防客户端错误地将自定义字段添加到找到果冻类别。的meta_value需要匹配我们的搜索查询。 如果还没有使用搜索功能,我们需要页面显示一些内容,因此我将其设置为添加最近的四个条目。 Else {query_posts('cat=19&posts_per_page=4');} 接下来,我们根据搜索是否被使用显示一个标题: if ($counties) {?> 您的搜索 < / h3 > < ?php}else { ?> Recently Added 最后,我们添加标准的WordPress循环,根据上面使用的查询对所有结果进行循环。 唯一的额外功能是我添加了以下内容: $event_county = get_post_meta($post->ID, 'county', true);? > 上面的代码行获取循环内的自定义字段信息,并将县作为每个清单的一部分显示出来。 保存你的文件并上传到你的服务器上,现在你应该能够根据自定义字段“县”对你所有的帖子进行正确的分类。 有关此方面的实际示例,请查看找到一个果冻页面在英国果冻网站上您将看到,通过将谷歌Maps与列出所有位置的可单击标记集成在一起,以及关于每个Jelly的大量附加信息,我已经将自定义字段做了很大的改进。 相关内容 30个优秀的WordPress视频教程 使用XAMPP进行WordPress主题开发 相关类别:WordPress而且Web开发 目录 相关资源 使用WampServer在你的电脑上安装WordPress 20个Drupal模块提升你网站的功能 用WordPress构建SaaS的经验教训 安装WordPress插件前要问的6个问题 Drupal学习曲线的7个阶段 10个面向开发者的开源博客平台 WordPress的未来 WordPress 3.9令人兴奋的改进 如何确保你没有使用一个可疑的WordPress主题 我们的服务 网站设计服务 网页设计机构 网页设计定价 获奖博客设计服务:升级你的博客 与值得信赖的定制网站设计公司建立您的网站 电子商务网站发展服务 B2B网站设计机构 数据库驱动的网页设计 中小企业网站用户体验分析服务 按行业划分资源 挖掘公司网站设计:5大技巧(附示例) 围栏安装者的5个网页设计技巧 5个简单而成功的汽车零部件零售商网页设计技巧 医疗网站设计技巧 医疗网站设计从一个获奖机构 十大有效的汽车服务中心网页设计技巧 可再生能源的网页设计:一个闪亮的网站的技巧 保险网站设计服务 生育诊所的5个网页设计技巧 你网站的搜索引擎优化如何? 使用我们的免费工具,在60秒内计算出你的分数。 获得你的SEO分数 与我们合作 网页设计服务 RainmakerFX 网页重新设计服务 登录页服务 继续阅读 网页设计资源 网页设计博客 一个网站的成本 响应式网页设计 通过电子邮件获取帖子 当我们发布新的博客文章时,请第一个知道! 每一天 每周一次 得到更新 加入20万营销经理,订阅《收入周刊》! 与我们保持联系: WebFX职业 加入我们的使命,为全球各地的企业提供行业领先的数字营销服务-同时建立您的个人知识和个人成长。 我们招聘! 查看30+职位空缺! 接下来阅读: 以前的文章用Adobe Illustrator绘制矢量交通锥 在下一篇文章 在打折前要考虑的5个建议