在我的WordPress子主题工作区,我正试图学习如何优化我的代码下面,以更有效地在其PHP过程中。我有10个图像,我的工作总量。**我希望任何数量的这些图像被调用到不同的网页上的鼻涕虫。**我知道在PHP中如何从一个函数返回一次,但我怎么说在PHP中...
- “我希望照片1、2、6转到slugA”
- “我希望照片2、3、5、9转到slugB”
- “我希望照片1、7转到slugC”
- 等等。
这是我目前掌握的情况
//DEFINING ALL MY PHOTOS AND RETURNING THEM
function my_post_photos (
$mQuery = 1,
$image01 = "filler_01.jpg",
$image02 = "filler_02.jpg",
$image03 = "filler_03.jpg",
$image04 = "filler_04.jpg",
$image05 = "filler_05.jpg",
$image06 = "filler_06.jpg",
$image07 = "filler_07.jpg",
$image08 = "filler_08.jpg",
$image09 = "filler_09.jpg",
$image10 = "filler_10.jpg"
): string
{
$vars = get_defined_vars();
foreach ($vars as $key => $value) {
$placeholders[] = get_stylesheet_directory_uri() . '/dist/images/' . $value;
}
return $placeholders[$mQuery];
}
//FURTHER DOWN THIS SAME PAGE...WITHIN MY WP LOOP, CALLING THEM
<?php
$query = new WP_Query($args);
if ($query->have_posts()) :
//WITH THE BELOW $i, I AM FULLY AWARE THAT THE NUMBER OF PHOTOS LOADS IS DEPENDENT ON HOW MANY TIMES MY LOOP CYCLES. I'M COOL WITH THAT BECAUSE I'M EVENTUALLY GOING TO HAVE MORE PHOTOS THAN POSTS.
$i=1;
while ($query->have_posts()) : $query->the_post();
$current_page = sanitize_post($GLOBALS['wp_the_query']->get_queried_object());
$slug = $current_page->post_name;
?>
<?php
if ($slug == "slugA") {
?>
<div>
<h6>
<!-- //THIS FUNCTION LOADS EACH PHOTO PERFECTLY FINE, BUT HOW CAN I ONLY RETURN PHOTOS 1, 2, 6 HERE? -->
<img src="<?php echo my_career_placeholder($i); ?>" border="0" alt="">
</h6>
</div>
<?php
} elseif ($slug = "slugB") {
//HOW CAN I RETURN ONLY PHOTOS 2, 3, 5, 9 HERE?
} elseif ($slug = "slugC") {
//HOW CAN I RETURN ONLY PHOTOS 1, 7 HERE?
}
?>
<?php
$i++;
endif;
endwhile;
endif;
wp_reset_postdata();
?>
1条答案
按热度按时间q3qa4bjr1#
从代码整体来看,我认为main函数可以重写如下:
这将允许您调用它,并通过执行
my_post_photos(3,5)
传入所需数量的索引,my_post_photos(3,5)
将返回一个可以循环的数组。此处演示:https://3v4l.org/8aq6d
如果您真的以这种一致的方式命名映像,还可以进行其他优化,但我现在只是简单介绍一下。
编辑
根据您的评论,我认为您希望在循环中调用函数并获得“下一个”项,但针对特定的鼻涕虫。
如果这是正确的,一种方法是创建第二个数组,将slugsMap到图像索引,然后您可以将
static
与该数组一起使用,这意味着随后对该函数的调用将不会重新创建该数组,而是使用第一个数组。你可以使用array_shift
,它从数组中获取第一个元素,然后从数组中移除索引。(如果我理解正确的话,array_shift
函数被认为对于大型数组来说是没有性能的,但是我认为您在这里根本不会注意到这一点。)下面的代码将返回一个字符串(或null),并且可以用一个known-slug重复调用以获得“next”条目。如果你的帖子比图片多,你可以把“next”附加到数组的末尾,这样你也可以得到一个循环池。
演示:https://3v4l.org/JDKOH