当前位置:首页-WordPress文章-WordPress-正文

wordpress自定义域函数get_post_custom_values多个值循环

wordpress自定义域函数get_post_custom_values多个值循环 - 第1张自定义域在Wordpress中有着相当重的份量,很多功能都可以在其中实现,最近有朋友要萨龙龙添加两个功能,一是缩略图使用自定义域来获取(支持外链),二是文章中显示幻灯片,这两个功能都已经在Deephoto主题中实现了,也将集成到Concise主题中,而且文章中显示幻灯片有两种方式:自定义域和简码。

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

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

  1. function post_thumbnail(){
  2.     global $post;
  3.     if(get_post_meta($post->ID, "imgt", true)) {
  4.         $values=get_post_custom_values"imgt");
  5.         echo '"'.$values[0].'" alt="'.$post->post_title.'" />';
  6.     } else { if( has_post_thumbnail() ){
  7.         //特色图像
  8.     } else {
  9.         //默认缩略图
  10.     }
  11.            }
  12. }

通过以上代码获取缩略图就有三种方式:自定义域(img)、特色图像和默认缩略图,使用来获取缩略图。

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

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

  1. if(get_post_meta($post->ID, "slides", true)) { ?>
  2. $slides = get_post_custom_values( "slides"); ?>
  3. foreach ($slides as $key => $value){ ?>
  4. class="swiper-slide slide-post">
  5. echo "$value"; ?>
  • 通过多添加几个自定义域(slides),就可以循环输出,再通过JS和CSS就可以实现幻灯片效果。

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

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

    1. if(get_post_meta($post->ID, "slides", true)) { ?>
    2. $slide_arr = get_post_custom_values( "slides");$slide_str = isset($slide_arr[0])? $slide_arr[0]:"";$slides = explode(PHP_EOL,$slide_str);?>//谢谢知言提供的这段代码
    3. foreach ($slides as $slide){ ?>
    4. class="swiper-slide slide-post">
    5. echo $slide; ?>

    自定义域中的多个值是要分开,可以换行,也可以使用符号,如果是|,字符串为$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]

    本文原创,作者:萨龙龙,其版权均为4166am金沙信心之选所有。
    如需转载,请注明出处:/get-post-custom-values.html