Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.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 Options API保存短码数组,然后在另一个函数中输出_Php_Arrays_Wordpress_Shortcode - Fatal编程技术网

Php 使用WordPress Options API保存短码数组,然后在另一个函数中输出

Php 使用WordPress Options API保存短码数组,然后在另一个函数中输出,php,arrays,wordpress,shortcode,Php,Arrays,Wordpress,Shortcode,注意:虽然这可能是一个简单的修复方法,但我对使用数组还不熟悉,完全被难住了。 我试图通过WordPress中的Options API保存一个短代码数组中的数据,然后调用该数组,并使用该数据创建另一个数组以连接到插件函数中。这是一个响应滑块插件,我基本上是在尝试为它附加一个短代码,这样我就可以在后端创建滑块,并在前端显示它,短代码如下:[responsive\u slider slider\u name=“imageslider”] 实现文档可以是,下面是我的代码: function respon

注意:虽然这可能是一个简单的修复方法,但我对使用数组还不熟悉,完全被难住了。

我试图通过WordPress中的Options API保存一个短代码数组中的数据,然后调用该数组,并使用该数据创建另一个数组以连接到插件函数中。这是一个响应滑块插件,我基本上是在尝试为它附加一个短代码,这样我就可以在后端创建滑块,并在前端显示它,短代码如下:
[responsive\u slider slider\u name=“imageslider”]

实现文档可以是,下面是我的代码:

function responsive_gallery_shortcode($atts, $content=null) {
    extract(shortcode_atts( array('slider_name' => 'product_page') , $atts));
    foreach ($slider_name as $value) {
        update_option('_unique_slider_name', $value );
    }
    if(function_exists('show_flexslider_rotator')) 
        echo show_flexslider_rotator( $slider_name );

    add_image_size( $slider_name , '550', '250', true );
}
add_shortcode('responsive_gallery', 'responsive_gallery_shortcode');        

if (!function_exists('custom_set_flexslider_hg_rotators')) {
    function custom_set_flexslider_hg_rotators() {
        $slider_name = get_option('_unique_slider_name');

        foreach ($slider_name as $value) { 
            $rotators = array();
            $rotators[ $value ] = array( 'size' => $value );    
            return $rotators;
        }   
    }  
} 
add_filter('flexslider_hg_rotators', 'custom_set_flexslider_hg_rotators', 9999);

我在两个
foreach
函数上都遇到“为foreach()提供的参数无效”错误。在我有两个短代码的页面上,两个错误都显示两次。似乎
$slider\u name
是字符串而不是数组,但必须有一种方法将其保存在
update\u option()
函数中,以便它返回数组。我对阵列非常陌生,我在这里肯定很挣扎。我花了好几个小时在这方面,已经在WordPress方面得到了一些帮助,但我还没有完全得到

由于shortcode属性将作为字符串到达,因此需要首先将其转换为数组

同时,由于必须将其作为字符串传递,因此需要使用分隔符以便进行管理

对于所有这些,您将需要PHP函数

结果:

array (size=1)
  0 => string 'one' (length=3)

结果:

array (size=1)
  0 => string 'one' (length=3)

PS:始终值得参考PHP手册及其每一页中的注释:


[更新]
您的原始代码存在许多问题,请查看此修订版本的注释:

function responsive_gallery_shortcode($atts, $content=null) {
    extract(shortcode_atts( array('slider_name' => 'product_page') , $atts));

    // Convert string into array
    // Using comma as separator when writing the shortcode in the post
    $array_slider = explode( ',', $slider_name );

    // YOU DON'T NEED A `foreach` HERE
    //foreach ($array_slider as $value) {
        update_option('_unique_slider_name', $array_slider );
    //}

    // I DON'T KNOW WHAT THIS FUNCTIONS DOES
    // But in any case, being $array_slider an array, maybe it should be inside a `foreach`
    if(function_exists('show_flexslider_rotator')) 
        echo show_flexslider_rotator( $array_slider );

    // THIS DOESN'T MAKE SENSE
    // You're not supposed to be adding images sizes at each Shortcode call
    // And you are dealing with an array
    add_image_size( $slider_name , '550', '250', true );
}
add_shortcode('responsive_gallery', 'responsive_gallery_shortcode');        

if (!function_exists('custom_set_flexslider_hg_rotators')) {
    function custom_set_flexslider_hg_rotators() {
        // The option was already saved as array, so we can work directly with it
        $slider_name = get_option('_unique_slider_name');

        // YOU DON'T WANT TO DECLARE THE VARIABLE AT EACH STEP OF THE LOOP
        $rotators = array();
        foreach ($slider_name as $value) { 
            $rotators[ $value ] = array( 'size' => $value );    
        }   
        // RETURN THE VALUE ONLY AFTER COMPLETING THE LOOP
        return $rotators;
    }  
    // PUT THE FILTER HOOK INSIDE if(!function_exists())
    add_filter('flexslider_hg_rotators', 'custom_set_flexslider_hg_rotators', 9999);
} 

由于shortcode属性将作为字符串到达,因此需要首先将其转换为数组

同时,由于必须将其作为字符串传递,因此需要使用分隔符以便进行管理

对于所有这些,您将需要PHP函数

结果:

array (size=1)
  0 => string 'one' (length=3)

结果:

array (size=1)
  0 => string 'one' (length=3)

PS:始终值得参考PHP手册及其每一页中的注释:


[更新]
您的原始代码存在许多问题,请查看此修订版本的注释:

function responsive_gallery_shortcode($atts, $content=null) {
    extract(shortcode_atts( array('slider_name' => 'product_page') , $atts));

    // Convert string into array
    // Using comma as separator when writing the shortcode in the post
    $array_slider = explode( ',', $slider_name );

    // YOU DON'T NEED A `foreach` HERE
    //foreach ($array_slider as $value) {
        update_option('_unique_slider_name', $array_slider );
    //}

    // I DON'T KNOW WHAT THIS FUNCTIONS DOES
    // But in any case, being $array_slider an array, maybe it should be inside a `foreach`
    if(function_exists('show_flexslider_rotator')) 
        echo show_flexslider_rotator( $array_slider );

    // THIS DOESN'T MAKE SENSE
    // You're not supposed to be adding images sizes at each Shortcode call
    // And you are dealing with an array
    add_image_size( $slider_name , '550', '250', true );
}
add_shortcode('responsive_gallery', 'responsive_gallery_shortcode');        

if (!function_exists('custom_set_flexslider_hg_rotators')) {
    function custom_set_flexslider_hg_rotators() {
        // The option was already saved as array, so we can work directly with it
        $slider_name = get_option('_unique_slider_name');

        // YOU DON'T WANT TO DECLARE THE VARIABLE AT EACH STEP OF THE LOOP
        $rotators = array();
        foreach ($slider_name as $value) { 
            $rotators[ $value ] = array( 'size' => $value );    
        }   
        // RETURN THE VALUE ONLY AFTER COMPLETING THE LOOP
        return $rotators;
    }  
    // PUT THE FILTER HOOK INSIDE if(!function_exists())
    add_filter('flexslider_hg_rotators', 'custom_set_flexslider_hg_rotators', 9999);
} 

谢谢你的帮助。我正在努力解决这个问题。使用上面的示例,如果我执行$array=explode(),那么数组现在存储在$array中,对吗?我试图做一个foreach语句,看起来像
foreach($array as$value){$rotators[$value]=array('size'=>$value);}
,但它只输出最后一个要存储的值,就像上面的函数一样。知道如何让它工作吗?@JeremiahPrummer,我们的原始代码有很多问题,请检查更新的答案。不工作,但在这一点上,我认为只是我连接的插件不是设计成这样工作的。我将求助于在需要的地方手动添加它,因为这比通过一个短代码来实现要容易得多(也更可靠)。谢谢你的帮助,你教会了我很多。谢谢你的帮助。我正在努力解决这个问题。使用上面的示例,如果我执行$array=explode(),那么数组现在存储在$array中,对吗?我试图做一个foreach语句,看起来像
foreach($array as$value){$rotators[$value]=array('size'=>$value);}
,但它只输出最后一个要存储的值,就像上面的函数一样。知道如何让它工作吗?@JeremiahPrummer,我们的原始代码有很多问题,请检查更新的答案。不工作,但在这一点上,我认为只是我连接的插件不是设计成这样工作的。我将求助于在需要的地方手动添加它,因为这比通过一个短代码来实现要容易得多(也更可靠)。谢谢你的帮助,你教会了我很多。