Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/226.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP标头中的数组在WordPress中不是全局数组_Php_Arrays_Wordpress_Globals - Fatal编程技术网

PHP标头中的数组在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

我正在头中创建一个项目数组,该数组将在WordPress模板的索引文件中调用。但出于某种原因,我得到:

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。是的,在头文件中声明它们为全局有效!谢谢你,杰克~~