相册(gallery)实际上是一种短代码,在 WordPress 中写文章,当你上传多张图片的时候,你可以选择通过图集的方式插入到文章中。这样可能会对排版有一些帮助,或者实现某些效果。
如果我们想要为带有图集的文章赋予特殊的样式或者增加一些内容来实现某些功能的话,就需要判断某篇文章是否有图集这个内容了。 既然图集是一种短代码,那么判断的原理和过程也很简单,你只需要查询出文章的内容,然后通过一些方法来获取短代码 gallery 的内容,这裡的方法可以正则匹配或者是截取字符串或者是使用 WordPress 官方的函数进行判断,下面一一讲解实现方法。
思路很简单,如果文章中有相册,那么内容中肯定有短代码,我们可以用正则匹配也可以截取这个字符,看看有没有内容。将下面的代码复制到 functions.php 文件中:
function wpjam_has_gallery(){
global $post;
return (strpos($post->post_content,'[gallery') !== false);
}
如果裡面匹配到了图集的短代码,这个函数就会返回 true,我们可以在诸如 single.php 等文件中,使用 if 语句加上这个函数来判断文中是否有图集然后进行下一步操作了。
可以使用官方提供的 has_shortcode 函数来判断是文章中是否有某个短代码。 可以将下面代码插入到 single.php 之类的调用文章的模板中判断使用:
global $post;
has_shortcode( $post->post_content, 'gallery' );
以上两种方法都能实现,不过第二种方法感觉更好一点,万一哪天相册的短代码换了个名字呢?