在 WordPress 一个自定义字段中存放多个值
WordPress 自定义字段可以实现很多功能,比如实现文章缩略图。我今天遇到了一个问题,如何将相关的两个信息放到一个自定义域中,然后提取出来分别使用。网络上大部分文章都是针对一个自定义域中只有一个值的情况写的,对存放多个值并提取使用的情况大部分都没有提及。我对 PHP 只是有一点点了解,研究了一下午才搞定这个问题。
下面以我的需求为例来演示如何在 WordPress 的一个自定义字段存放多个值并提取使用。我博客的文章分为两类,一类是翻译的,一类是原创的。如果是原创的文章,就在“日志信息”中注明为“本站原创文章”,如果是翻译的,就在“日志信息”中注明来源网站的名称,并超链接过去。我使用了上面的函数来完成这个工作。
function article_source() { global $post; $article_source = get_post_meta($post->ID, article_source,false); if($article_source) { foreach ($article_source as $article_sources){ $fullValue = explode ("|", $article_sources); $name = $fullValue[0]; $address = $fullValue[1]; } echo '翻译来源:<a href="'.$address.'" target="_blank">'.$name.'</a>,'; } else { echo '本文为本站原创,'; } }
将上面的代码复制到 WordPress 主题目录的 functions.php 中,然后在合适的地方调用这个函数即可。对于翻译的文章,需要给文章添加一个名称为 article_source 的自定义域,里面存放两个值,方式为“网站名|文章地址”。原创的文章则不添加这个自定义域。
下面简单解释一下这段代码。get_post_meta() 这个函数会调用指定自定义域中的值,通过其参数我们可以控制是作为一个字符串调用还是作为一个数组调用以便接下来的处理,详细的用法请参见函数的说明。我这里使用 false 参数将函数设定为作为数组提取。接下来使用 foreach 语句遍历数组,讲结果存放到一个新的变量中,再用 explode 语句以“|” 符号为标记对其进行切割。最后就是把切割开的值分别存放到两个新的变量中以供提取使用。
有了这个例子,你就可以很方便的修改上面给出的代码来实现自己需要的功能了。
18条评论▼