将文件URL参数从高级自定义字段传递到短码

时间:2017-06-19 作者:Kyle

我正在尝试创建一个自定义短代码,它使用另一个短代码为网格上的几个音频播放器使用Visual Composer显示自定义帖子类型。

我想使用的音频播放器是Compact audio player插件,它使用了[sc_embed_player fileurl="URL OF THE MP3 FILE"].

我想做的是创建2个自定义短代码,将正确的mp3 url注入fileurl=" " 栅格加载时的路径。我正在使用高级自定义字段和代码,这些代码用于我的functions.php 现在是(我计划复制,当我可以让这一个为另一个短代码工作时):

function get_generic_demo() {
$demo = get_field( \'generic_demo\');
echo do_shortcode(\'[sc_embed_player fileurl="\'.$demo[\'url\'].\'"]\');
}
add_shortcode( \'generic_demo\', \'get_generic_demo\');
然而,它给了我一个错误,当输入自定义快捷码时网格显示时,我没有输入有效的url。

我尝试了设置从ACF返回到文件url和数组(如上所述)。

我也尝试过:

$demo = get_field( \'generic_demo\', $post->ID);
任何帮助都将不胜感激

2 个回复
SO网友:Johansson

不使用echo 在您的短代码中。使用return 相反

function get_generic_demo() {
    //Get the field\'s value
    $demo = get_field( \'generic_demo\');
    //Save the URL into a variable
    $url = $demo[\'url\'];
    // Pass it to the other shortcode and return its value
    return do_shortcode(\'[sc_embed_player fileurl="\'.$url.\'"]\');
}
add_shortcode( \'generic_demo\', \'get_generic_demo\');
还要确保您的字段包含正确的URL格式。使用转储变量var_dump 来验证它。这很可能是您的问题所在。

SO网友:Ryan

如果这能解决问题,我不是百分之百肯定,但请尝试将全局post变量拉入您的shortcode声明函数:

function get_generic_demo() {
    global $post;
    //Get the field\'s value
    $demo = get_field(\'generic_demo\');
    //Save the URL into a variable
    $url = $demo[\'url\'];
    // Pass it to the other shortcode and return its value
    return do_shortcode(\'[sc_embed_player fileurl="\'.$url.\'"]\');
}
add_shortcode( \'generic_demo\', \'get_generic_demo\');
响应编辑-2017-06-20@上午11:45**

问题似乎是,无论Visual Composer如何构建网格,CPT ID都没有得到确认。如何为每个项目条目设置其余数据(即每个项目的标题和说明)?您是手动将其输入网格还是自动生成?

结束

相关推荐

php code to shortcode

这是我的php代码:<?php global $royal_profile;?> <div class=\"profile-img\" data-key=\"profilepicture\"> <?php echo get_avatar( get_current_user_id(), 64 ); ?> </div> 然后,我尝试将其转换为一个短代码(以便我可以在菜单中使用,因为我意识到我不能简

将文件URL参数从高级自定义字段传递到短码 - 小码农CODE - 行之有效找到问题解决它

将文件URL参数从高级自定义字段传递到短码

时间:2017-06-19 作者:Kyle

我正在尝试创建一个自定义短代码,它使用另一个短代码为网格上的几个音频播放器使用Visual Composer显示自定义帖子类型。

我想使用的音频播放器是Compact audio player插件,它使用了[sc_embed_player fileurl="URL OF THE MP3 FILE"].

我想做的是创建2个自定义短代码,将正确的mp3 url注入fileurl=" " 栅格加载时的路径。我正在使用高级自定义字段和代码,这些代码用于我的functions.php 现在是(我计划复制,当我可以让这一个为另一个短代码工作时):

function get_generic_demo() {
$demo = get_field( \'generic_demo\');
echo do_shortcode(\'[sc_embed_player fileurl="\'.$demo[\'url\'].\'"]\');
}
add_shortcode( \'generic_demo\', \'get_generic_demo\');
然而,它给了我一个错误,当输入自定义快捷码时网格显示时,我没有输入有效的url。

我尝试了设置从ACF返回到文件url和数组(如上所述)。

我也尝试过:

$demo = get_field( \'generic_demo\', $post->ID);
任何帮助都将不胜感激

2 个回复
SO网友:Johansson

不使用echo 在您的短代码中。使用return 相反

function get_generic_demo() {
    //Get the field\'s value
    $demo = get_field( \'generic_demo\');
    //Save the URL into a variable
    $url = $demo[\'url\'];
    // Pass it to the other shortcode and return its value
    return do_shortcode(\'[sc_embed_player fileurl="\'.$url.\'"]\');
}
add_shortcode( \'generic_demo\', \'get_generic_demo\');
还要确保您的字段包含正确的URL格式。使用转储变量var_dump 来验证它。这很可能是您的问题所在。

SO网友:Ryan

如果这能解决问题,我不是百分之百肯定,但请尝试将全局post变量拉入您的shortcode声明函数:

function get_generic_demo() {
    global $post;
    //Get the field\'s value
    $demo = get_field(\'generic_demo\');
    //Save the URL into a variable
    $url = $demo[\'url\'];
    // Pass it to the other shortcode and return its value
    return do_shortcode(\'[sc_embed_player fileurl="\'.$url.\'"]\');
}
add_shortcode( \'generic_demo\', \'get_generic_demo\');
响应编辑-2017-06-20@上午11:45**

问题似乎是,无论Visual Composer如何构建网格,CPT ID都没有得到确认。如何为每个项目条目设置其余数据(即每个项目的标题和说明)?您是手动将其输入网格还是自动生成?

相关推荐

Namespaced shortcode?

我正在改造一个旧的WP站点,该站点有许多自定义的短代码,显然由于代码当前的组织方式,这些短代码在性能方面付出了代价。当然,我可以修复优化不好的代码,使用十几个短代码,并且一天就可以完成,但我想知道如何更好地组织它们。根据WordPress\'documentation, 建议将它们放在插件中并在上初始化init. 我们可以通过这样“命名”它们来减少这个钩子中的负载吗?[com.company shortcode attr=\"attr\" prop=\"prop\"] 有人尝试过这样的解决方案吗