wordpress调用图集功能开发
wordpress调用图集功,我也在网上查了很多教程,发现还是会有一些问题,于是找朋友开发了一个图集函数,函数如下:
在functions函数中添加如下代码:
//图集
//正则匹配获取img标签src内容-多个
function get_imgAllSrc($tag) {
// print_r($tag);die;
// preg_match_all('/(id|alt|title|src)=("[^"]*")/i', $tag, $matches);
preg_match_all('/(src)=("[^"]*")/i', $tag, $matches);
$ret = array();
foreach($matches[0] as $i => $v) {
$ret[] = trim($matches[2][$i],'"');
}
return $ret;
}
//图集调用限制条数
function each_gallery_url($max) {
global $post, $posts;
ob_start();
ob_end_clean();
$content = $post->post_content;
$gallery = get_post_gallery_images();
$gallery_all = preg_match_all('/<img.+src=[\'"]([^\'"]+)[\'"].*>/i', $content, $matche_all);
$gallery_old = preg_match_all('/<li><img.+src=[\'"]([^\'"]+)[\'"].*><\/li>/i', $content, $matche_old);
$gallery_filter = preg_match_all('/<figure class="wp-block-gallery.*><\/figure>/i', $content, $matche_filter);
$gallery_all_first = $matche_all[1][0];
$gallery_old_array = $matche_old[1];
$gallery_new_string = implode($matche_filter[0]); //获取gallery内所有标签并转为string类型
$list_img_src = get_imgAllSrc($gallery_new_string); //content内匹配到的所有图片src
// $max = 5;//限制调用最大条数
if(count($list_img_src)>1){
//如果画廊图片大于1则匹配图片src(优先兼容新版画廊)
// foreach ($list_img_src as $url) {
// echo '<li style="background:url('.$url.') center center /cover;" src="'.$url.'"></li>';
// }
$imglen = count($list_img_src);
if($imglen>=$max){
for($i=0;$i<$max;$i++){
echo '<li style="background:url('.$list_img_src[$i].') center center /cover;" src="'.$list_img_src[$i].'"></li>';
}
}else{
for($i=0;$i<$imglen;$i++){
echo '<li style="background:url('.$list_img_src[$i].') center center /cover;" src="'.$list_img_src[$i].'"></li>';
}
}
}elseif($gallery_old_array){
//如果是li内的img(兼容老版)
// foreach ($gallery_old_array as $val){
// echo '<li style="background:url('.$val.') center center /cover;" src="'.$val.'"></li>';
// };
if(empty($gallery_old_array)) echo '<li style="background:url('.$gallery_all_first.') center center /cover;" src="'.$gallery_all_first.'"></li>';
$imglen = count($gallery_old_array);
if($imglen>=$max){
for($i=0;$i<$max;$i++){
echo '<li style="background:url('.$gallery_old_array[$i].') center center /cover;" src="'.$gallery_old_array[$i].'"></li>';
}
}else{
for($i=0;$i<$imglen;$i++){
echo '<li style="background:url('.$gallery_old_array[$i].') center center /cover;" src="'.$gallery_old_array[$i].'"></li>';
}
}
}else{
//未匹配到旧版/新版规则即使用内容第一张图作为画廊默认图(若内容无图片则使用$defaultPic默认图片)
// $defaultPic = bloginfo('template_url'). "/images/default.jpg";
if(count($gallery_all_first)<=0) echo '<li use="default_image" style="background:url(/images/default.jpg) center center /cover;" src="/images/default.jpg"></li>';
else echo '<li use="first_image" style="background:url('.$gallery_all_first.') center center /cover;" src="'.$gallery_all_first.'"></li>';
};
// return $gallery_html;
/*调用代码<?php echo each_gallery_url(4); ?>*/
}
调用代码如下:
<?php echo each_gallery_url(4); ?>
说明:此图集调用代码和函数是获取文档中<li>标签内的<img>或者是获取《画廊》中的图片,同时可以限制最大获取数量。
版权保护: 本文由小冬SEO编辑发布,转载请保留链接: http://www.cdseoyh.cn/shuo/124.html