[![wordpress自定义域函数get_post_custom_values多个值循环](https://pic.salongweb.com/2015/10/custom_values.jpg)](https://pic.salongweb.com/2015/10/custom_values.jpg "wordpress自定义域函数get_post_custom_values多个值循环")自定义域在Wordpress中有着相当重的份量，很多功能都可以在其中实现，最近有朋友要萨龙龙添加两个功能，一是缩略图使用自定义域来获取（支持外链），二是文章中显示幻灯片，这两个功能都已经在[Deephoto主题](https://api.salongweb.com/product/deephoto.html)中实现了，也将集成到[Concise主题](https://api.salongweb.com/product/concise.html)中，而且文章中显示幻灯片有两种方式：自定义域和简码。

自定义域函数get\_post\_custom\_values是获取当前日志中所有自定义字段值，如果该值不存在或为空都将返回null。

**一、使用自定义域来实现缩略图**

1. function post\_thumbnail(){
2. global $post;
3. if(get\_post\_meta($post-&gt;ID, “imgt”, true)) {
4. $values=get\_post\_custom\_values( “imgt”);
5. echo ‘&lt;img src=“‘.$values\[0\].'” alt=“‘.$post-&gt;post\_title.'” /&gt;’;
6. } else { if( has\_post\_thumbnail() ){
7. //特色图像
8. } else {
9. //默认缩略图
10. }
11. }
12. }

通过以上代码获取缩略图就有三种方式：自定义域（img）、特色图像和默认缩略图，使用&lt;?php post\_thumbnail(); ?&gt;来获取缩略图。

**二、获取自定义域并循环输出**

1、获取相同的自定义域并循环输出

1. &lt;?php if(get\_post\_meta($post-&gt;ID, “slides”, true)) { ?&gt;
2. &lt;?php $slides = get\_post\_custom\_values( “slides”); ?&gt;
3. &lt;?php foreach ($slides as $key =&gt; $value){ ?&gt;
4. &lt;article class=“swiper-slide slide-post”&gt;
5. &lt;?php echo “$value”; ?&gt;
6. &lt;/article&gt;
7. &lt;?php }} ?&gt;

通过多添加几个自定义域（slides），就可以循环输出，再通过JS和CSS就可以实现幻灯片效果。

这个方法稍有些麻烦，也增加了数据量，所以我们在一个自定义域中添加多个值来循环输出，效果是一样。

2、获取一个自定义域中的多个值并循环输出

1. &lt;?php if(get\_post\_meta($post-&gt;ID, “slides”, true)) { ?&gt;
2. &lt;?php $slide\_arr = get\_post\_custom\_values( “slides”);$slide\_str = isset($slide\_arr\[0\])? $slide\_arr\[0\]:“”;$slides = explode(PHP\_EOL,$slide\_str);?&gt;//谢谢知言提供的这段代码
3. &lt;?php foreach ($slides as $slide){ ?&gt;
4. &lt;article class=“swiper-slide slide-post”&gt;
5. &lt;?php echo $slide; ?&gt;
6. &lt;/article&gt;
7. &lt;?php }} ?&gt;

自定义域中的多个值是要分开，可以换行，也可以使用符号，如果是|，字符串为$str, 那就用explode(“|”,$str)，如果是换行，就用explode(PHP\_EOL,$str)，这样就很方便的循环输出多个值。

不过使用自定义域来实现文章幻灯片时，位置是固定的，因为代码固定，但是管理方便，如果不想用此功能，可以使用代码直接删除全部自定义域。

如果要添加到文章的任意位置，可以使用简码来实现，自定义域中通过explode函数把字符串分割开，在简码中同样可以，例如：\[slides img=”图片链接1|图片链接2″\]，与获取的自定义域中的值是一样的，使用explode(“|”,$str)把img中的值（多张图片链接）分割并循环，使用较方便。
\[scbutton link=”https://deephoto.salongweb.com/slides” target=”blank” variation=”blue”\]幻灯片演示与自定义域添加\[/scbutton\]