我正在 header 中创建一个项目数组,该数组将在 WordPress 模板的索引文件中调用。但由于某种原因我得到:
Notice: Undefined variable: img_arr in ... on line 27
为什么在我的 header 中定义它时会发生这种情况:
$img_arr = array();
$caption_arr = array();
// Second Featured Image
if (class_exists('MultiPostThumbnails')) {
$image_name = "second-image";
if (MultiPostThumbnails::has_post_thumbnail('page', $image_name)) {
$image_id = MultiPostThumbnails::get_post_thumbnail_id( 'page', $image_name, $post->ID );
$attr = array('class' => "featured-image");
$image_2 = wp_get_attachment_image( $image_id, 'second-image', false, $attr );
array_push($img_arr, $image_2);
}
};
$post_thumbnail_id = MultiPostThumbnails::get_post_thumbnail_id( get_post_type(), 'second-image', get_queried_object_id() );
$post_thumbnail_post = get_post( $post_thumbnail_id );
$caption_2 = trim( strip_tags( $post_thumbnail_post->post_excerpt ) );
array_push($caption_arr, $caption_2);
这允许用户添加多个特色图像,最多可达十张图像。但它在索引文件中无法识别:
foreach($img_arr as $key => $value) {
echo $value;
echo '<div class="featured-image-caption">';
echo $caption[$key];
echo '</div>';
}
我已经为此工作了很多小时,所以我可能会忽略一些非常简单的事情。或者 WordPress 函数 get_header()
是否可能不允许数组在文件之间移动?如果是这样,我是否可以在我的 functions.php 中添加一些内容以允许数组更加全局化?
最佳答案
我非常确定 WordPress API 结构不允许您按照您认为与直接 PHP 一起工作的方式传递变量或数组。因此,请考虑使用 global
variable scope实现此功能的目标:
global $img_arr $caption_arr;
因此,在索引文件中,您可以执行以下操作:
global $img_arr $caption_arr;
foreach($img_arr as $key => $value) {
echo $value;
echo '<div class="featured-image-caption">';
echo $caption[$key];
echo '</div>';
}
或者你可以用$GLOBALS
来做到这一点:
$GLOBALS['img_arr'] = array();
$GLOBALS['caption_arr'] = array();
然后像这样访问值:
foreach($GLOBALS['img_arr'] as $key => $value) {
echo $value;
echo '<div class="featured-image-caption">';
echo $GLOBALS['caption_arr'][$key];
echo '</div>';
}
您还可以这样做来初始化数组:
$img_arr = array();
$caption_arr = array();
这意味着一切要从头开始,对吧?
那你为什么要这样做:
array_push($img_arr, $image_2);
array_push($caption_arr, $caption_2);
Wny 不只是像这样简单地增加数组:
$img_arr[] = $image_2;
$caption_arr[] = $caption_2;
关于php - PHP header 中的数组在 WordPress 中不是全局的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24093208/