PHP标头中的数组在WordPress中不是全局数组
我正在头中创建一个项目数组,该数组将在WordPress模板的索引文件中调用。但出于某种原因,我得到:PHP标头中的数组在WordPress中不是全局数组,php,arrays,wordpress,globals,Php,Arrays,Wordpress,Globals,我正在头中创建一个项目数组,该数组将在WordPress模板的索引文件中调用。但出于某种原因,我得到: Notice: Undefined variable: img_arr in ... on line 27 为什么在我的标题中定义它时会发生这种情况: $img_arr = array(); $caption_arr = array(); // Second Featured Image if (class_exists('MultiPostTh
Notice: Undefined variable: img_arr in ... on line 27
为什么在我的标题中定义它时会发生这种情况:
$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>';
}
foreach($img\u arr as$key=>$value){
echo美元价值;
回声';
echo$caption[$key];
回声';
}
我已经为此工作了很多小时,所以我可能忽略了一些非常简单的事情。或者WordPress函数
get_header()
是否可能不允许数组在文件之间移动?如果是这样的话,我是否可以在functions.php
中添加一些东西,使数组更具全局性 我非常确定WordPress API结构不允许您以您认为在纯PHP中工作的方式传递变量或数组。因此,请考虑使用A来实现这个函数的目标:
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>';
}
foreach($GLOBALS['img_arr'] as $key => $value) {
echo $value;
echo '<div class="featured-image-caption">';
echo $GLOBALS['caption_arr'][$key];
echo '</div>';
}
$img_arr[] = $image_2;
$caption_arr[] = $caption_2;
然后访问如下值:
global $img_arr $caption_arr;
foreach($img_arr as $key => $value) {
echo $value;
echo '<div class="featured-image-caption">';
echo $caption[$key];
echo '</div>';
}
foreach($GLOBALS['img_arr'] as $key => $value) {
echo $value;
echo '<div class="featured-image-caption">';
echo $GLOBALS['caption_arr'][$key];
echo '</div>';
}
$img_arr[] = $image_2;
$caption_arr[] = $caption_2;
这意味着它是从零开始的,对吗
那你为什么要这样做:
array_push($img_arr, $image_2);
array_push($caption_arr, $caption_2);
Wny不只是像这样简单地增加数组:
global $img_arr $caption_arr;
foreach($img_arr as $key => $value) {
echo $value;
echo '<div class="featured-image-caption">';
echo $caption[$key];
echo '</div>';
}
foreach($GLOBALS['img_arr'] as $key => $value) {
echo $value;
echo '<div class="featured-image-caption">';
echo $GLOBALS['caption_arr'][$key];
echo '</div>';
}
$img_arr[] = $image_2;
$caption_arr[] = $caption_2;
@我刚刚编辑了这个问题。我认为解决方案是声明
global$img\u arr$caption\u arr代码>。是的,在头文件中声明它们为全局有效!谢谢你,杰克~~