Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/266.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 获取旋转滑块短代码_Php_Wordpress_Advanced Custom Fields - Fatal编程技术网

Php 获取旋转滑块短代码

Php 获取旋转滑块短代码,php,wordpress,advanced-custom-fields,Php,Wordpress,Advanced Custom Fields,我在尝试新的东西。我有一个Wordpress自定义主题。我有所有设置的高级自定义字段。我在带有选项的选择字段上使用高级自定义字段的load_field函数。我想做的基本上是显示旋转滑块短代码作为该字段的选择。。。这是我在functions.php文件中的代码。任何帮助都将不胜感激!: <?php function my_acf_load_field( $field ) { $field['choices'] = array( <-- WANT REVOLU

我在尝试新的东西。我有一个Wordpress自定义主题。我有所有设置的高级自定义字段。我在带有选项的选择字段上使用高级自定义字段的load_field函数。我想做的基本上是显示旋转滑块短代码作为该字段的选择。。。这是我在functions.php文件中的代码。任何帮助都将不胜感激!:

<?php

function my_acf_load_field( $field ) {

    $field['choices'] = array(
        <-- WANT REVOLUTION SLIDER SHORTCODES HERE -->
    );

    return $field;

}


// all
// add_filter('acf/load_field', 'my_acf_load_field');

// type
add_filter('acf/load_field/type=select', 'my_acf_load_field');

// name
// add_filter('acf/load_field/name=my_select', 'my_acf_load_field');

// key
// add_filter('acf/load_field/key=field_508a263b40457', 'my_acf_load_field');

?>

你可以做以下几点。旋转滑块项目存储在一个名为wp_revslider_sliders的表中。wp_部分可能会根据您设置数据库的方式而更改-请先检查表名

您可以使用Wordpress$wpdb global查询此表,并返回别名字段,该字段用作快捷码。因此,在load field函数的主体中,您可以尝试以下内容

function my_acf_load_field( $field ) {
    global $wpdb;
    $query = sprintf('select r.id, r.alias from %srevslider_sliders r',$wpdb->prefix);
    $sliders = $wpdb->get_results($query,OBJECT);

    foreach($sliders as $slider)
    {
        //This just formats the string with the correct short code
        $field['choices'][$slider->alias] = sprintf('[rev_slider alias="%s"]',$slider->alias);
    }

    return $field;
}
这应该用正确的选项填充您的下拉列表,或者至少让您走上正确的道路

答案更新于2020年4月22日:对于Slider Revolution V6,函数GetAllSliderAlias已替换为get_sliders,并返回一个对象数组而不是字符串数组

用于Slider Revolution V6的functions.php

然后在模板或任何使用自定义字段的页面上,我将实际的短代码放在那里

page.php

V6之前的滑块旋转版本的旧答案

不管出于什么原因,Andrew M答案中的$sliders变量没有返回任何内容,因此我提出了这个解决方案,它基于随机显示任何滑块,并首先检查类是否存在以避免错误

V6之前版本的functions.php


从Slider Revolution V6中,GetAllSliderAlias方法不再可用。 新代码是:

functions.php

page.php


没问题-很乐意帮忙。您是否可以将答案标记为正确,以便其他搜索答案的人知道存在解决方案?您不应假定表前缀为wp\ux。使用$wpdb->prefix
function my_acf_load_field( $field ) {
    if ( class_exists( 'RevSlider' ) ) {
        $rev_slider = new RevSlider();
        $sliders = $rev_slider->get_sliders();
        if(count($sliders) > 0) {
            foreach($sliders as $slider)
            {
                $field['choices'][$slider->alias] = $slider->title;
            }
        } else {
            $field['choices'] = array( 'none' => 'No sliders exist. You must create one first.' );
        }
    } else {
        $field['choices'] = array( 'none' => 'Slider Revolution plugin was not found.' );
    }
    return $field;
}
//Only place these options on a specific select field with the alias "rev_slider"
add_filter('acf/load_field/name=rev_slider', 'my_acf_load_field');
$slider_alias = get_field('rev_slider');
if(!empty($slider_alias)) {
    echo do_shortcode(sprintf('[rev_slider alias="%s"]', $slider_alias));
}
function my_acf_load_field( $field ) {
    if ( class_exists( 'RevSlider' ) ) {
        $rev_slider = new RevSlider();
        $slider_aliases = $rev_slider->getAllSliderAliases();
        if(count($slider_aliases) > 0) {
            foreach($slider_aliases as $slider_alias)
            {
                $field['choices'][$slider_alias] = $slider_alias;
            }
        } else {
            $field['choices'] = array( 'none' => 'No sliders exist. You must create one first.' );
        }
    } else {
        $field['choices'] = array( 'none' => 'Slider Revolution plugin was not found.' );
    }
    return $field;
}
//Only place these options on a specific select field with the alias "rev_slider"
add_filter('acf/load_field/name=rev_slider', 'my_acf_load_field');
function my_acf_load_field($field)
{
    if (class_exists('RevSlider')) {
        $rev_slider = new RevSlider();
        $slider_aliases = $rev_slider->get_sliders();
        if (count($slider_aliases) > 0) {
            foreach ($slider_aliases as $slider_alias) {
                $field['choices'][$slider_alias->alias] = $slider_alias->alias;
            }
        } else {
            $field['choices'] = array('none' => 'No sliders exist. You must create one first.');
        }
    } else {
        $field['choices'] = array('none' => 'Slider Revolution plugin was not found.');
    }
    return $field;
}
//Only place these options on a specific select field with the alias "rev_slider"
add_filter('acf/load_field/name=rev_slider', 'my_acf_load_field');
$slider_alias = get_field('rev_slider');
if(!empty($slider_alias)) {
    echo do_shortcode(sprintf('[rev_slider alias="%s"]', $slider_alias));
}