[关闭]
@zhongzilu 2016-04-16T13:56:30.000000Z 字数 1726 阅读 2955

WordPress自定义栏目的使用

WordPress get_post_mate()

转载请附原文地址:https://www.zybuluo.com/zhongzilu/note/346954


前言

最近有个任务,要实现在公司官网上点击某个商品的购买按钮,就跳转到对应的淘宝店页面去。由于公司官网用的WordPress平台,我之前只是听说过,并没有实质性使用过,所以一开始就是一头雾水,再加上网站原本是由外包公司做的,交接时没有任何文档,因此我根本不知如何下手,但最后还是硬着头皮去做了。

我思考着要完成这个任务我需要怎么做,由于网站上的内容都是动态从数据库中取的,所以如果我要实现点击购买按钮就跳转到对应网店的功能,就不可能在代码中把跳转的店铺地址写死了,必须要从数据库中去读取,并且还要和商品关联起来才行。

这其中肯定涉及到把链接地址写入数据库,WordPress提供了一个管理后台,通过管理后台可以把数据写入数据库。

打开后台,找到文章编辑页面,在右上方有个显示选项,展开后可以显示和隐藏模块。勾选自定义栏目
自定义栏目

在页面下方可以看到这个模块,在这里可以新增自定义的数据字段,并给它赋值。
添加自定义栏目

拿我的任务来举例,我点击购买按钮之后跳转到对应的商品淘宝店,所以商品淘宝店的地址就需要写入数据库,所以现在新增一个自定义字段,点击输入新栏目
添加自定义栏目

输入自定义名称和值,输入完成后点击添加自定义栏目
添加自定义栏目

添加完之后就是如下图所示
添加自定义栏目成功

自定义栏目添加成功了,那么问题来了,我们如何取到自定义栏目的值并显示在页面上呢?
,这与将远程图像设置为缩略图有异曲同工之妙,当然自定义字段还可以用于存储许多我们觉得更有用的东西,例如统计信息,等等。

用法

<?php $meta_values = get_post_meta($post_id, $key, $single); ?>

参数解释

$post_id文章的ID(如果在循环中,你可以用 get_the_ID()来设置),
$key自定义字段的名称(键值),
$single是否以字符串形式返回,false会返回数组形式。

缺省用法

<?php $value = get_post_meta(76, 'key'); ?>

实例

  1. if (have_posts()) ://如果有文章
  2. while (have_posts()) : the_post(); //开启主循环
  3. $value = get_post_meta(get_the_ID(),'custom_meta',true);
  4. endwhile;
  5. endif;

上面介绍完get_post_meta()函数,现在我们就来实现我的这个任务。
在项目源代码中找到使用的主题的文件夹,我的文件夹位置为:htdocs/wp-content/themes/jitatheme/
再找到function.php文件并打开,在这里我们将封装成一个获取地址的函数,代码如下:

  1. /**
  2. *获取淘宝店铺商品的地址
  3. */
  4. function getTB_Url($postID){
  5. $key = 'direct_to_tb';
  6. $url = get_post_meta($postID, $key, true);
  7. return $url;
  8. }

然后找到我们要修改的页面,用一个<a>标签来实现点击跳转。我们在<a>标签的href属性中来调用刚才封装的函数,代码如下:

  1. <a class="btn" href="<?php echo getTB_Url(get_the_ID()); ?>" target="_blank">点击购买</a>

最后在页面上点击测试一下,跳转正确,任务完毕

总结

  • 了解了如何在WordPress后台管理界面添加自定义栏目
  • 了解了如何获取自定义栏目的值和get_post_meta()函数的使用

@author: zhongzilu
@url http://ask.android-studio.org/?/people/zhongzilu
简书 http://www.jianshu.com/p/9ae919f53313
马克飞象 https://app.yinxiang.com/shard/s59/sh/b7ab5cca-7105-47fe-8f00-d3c486a0cf69/6e90b199a2a412210228e2dbd10ebef8

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注