获取革命滑块简码
Fetching revolution slider shortcodes
我正在尝试新的东西。我有一个 Wordpress 自定义主题。我有高级自定义字段的所有设置。我在带有 "choices" 的 "select" 字段上使用高级自定义字段的 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');
?>
您可以执行以下操作。 Revolution slider 滑块项目存储在名为 wp_revslider_sliders 的 table 中(wp_ 部分可能会根据您设置数据库的方式而改变 - 首先检查 table 名称)
您可以使用 Wordpress $wpdb 全局查询此 table 并取回别名字段 - 用于作为简码。所以在你的负载场函数的主体中你可以尝试这样的事情
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,函数 getAllSliderAliases()
已替换为 get_sliders()
和 returns 对象数组,而不是字符串数组。 Source.
functions.php for Slider Revolution V6
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');
然后在模板或您使用自定义字段的任何页面上,我将实际的简码放在那里。
page.php
$slider_alias = get_field('rev_slider');
if(!empty($slider_alias)) {
echo do_shortcode(sprintf('[rev_slider alias="%s"]', $slider_alias));
}
V6 之前的 Slider Revolution 版本的旧答案
出于某种原因,我从 Andrew M 的回答中获得的 $sliders
变量没有返回任何内容,所以我想出了这个基于 Themepunch's documentation for displaying any slider at random and this article 的解决方案来检查 class首先存在以避免错误。
functions.php 对于 V6 之前的 Slider Revolution 版本
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');
从 Slider Revolution V6 开始,方法 "getAllSliderAliases" 不再可用。
新代码是:
functions.php
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');
page.php
$slider_alias = get_field('rev_slider');
if(!empty($slider_alias)) {
echo do_shortcode(sprintf('[rev_slider alias="%s"]', $slider_alias));
}
我正在尝试新的东西。我有一个 Wordpress 自定义主题。我有高级自定义字段的所有设置。我在带有 "choices" 的 "select" 字段上使用高级自定义字段的 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');
?>
您可以执行以下操作。 Revolution slider 滑块项目存储在名为 wp_revslider_sliders 的 table 中(wp_ 部分可能会根据您设置数据库的方式而改变 - 首先检查 table 名称)
您可以使用 Wordpress $wpdb 全局查询此 table 并取回别名字段 - 用于作为简码。所以在你的负载场函数的主体中你可以尝试这样的事情
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,函数 getAllSliderAliases()
已替换为 get_sliders()
和 returns 对象数组,而不是字符串数组。 Source.
functions.php for Slider Revolution V6
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');
然后在模板或您使用自定义字段的任何页面上,我将实际的简码放在那里。
page.php
$slider_alias = get_field('rev_slider');
if(!empty($slider_alias)) {
echo do_shortcode(sprintf('[rev_slider alias="%s"]', $slider_alias));
}
V6 之前的 Slider Revolution 版本的旧答案
出于某种原因,我从 Andrew M 的回答中获得的 $sliders
变量没有返回任何内容,所以我想出了这个基于 Themepunch's documentation for displaying any slider at random and this article 的解决方案来检查 class首先存在以避免错误。
functions.php 对于 V6 之前的 Slider Revolution 版本
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');
从 Slider Revolution V6 开始,方法 "getAllSliderAliases" 不再可用。 新代码是:
functions.php
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');
page.php
$slider_alias = get_field('rev_slider');
if(!empty($slider_alias)) {
echo do_shortcode(sprintf('[rev_slider alias="%s"]', $slider_alias));
}