我正在Wordpress中构建一个自定义快捷码。基本上,我希望这样做的是:
动态地从一组高级自定义字段中提取值,并将这些值输出到一个以逗号分隔的javascript数组中。我遇到的问题是,我可以成功地在这组字段上运行循环,获取所有值并将其输出到页面上。然而,当我尝试将它们存储到变量中,并将其拉入javascript数组时($v
存储在output
中引用的变量urls
数组),它只返回其中一个值。
如何从foreach ( $value as $v)
要在urls
带逗号分隔的数组?任何帮助都将不胜感激:)
add_shortcode(\'training-player\', \'training_player\');
// Add shortcode for Diagnostic media playlist
function training_player() {
$author_id = get_the_author_meta(\'ID\');
$fields = acf_get_fields(405);
if( $fields ) {
echo \'<div id="player"></div>\';
foreach( $fields as $field ) {
$value = get_field( $field[\'name\'], \'user_\'. $author_id );
if(!empty($value)) {
if ($value) {
foreach ( $value as $v) {
echo $v;
}
}
}
}
echo "
<script src=\'https://luwes.github.io/vimeowrap.js/vimeowrap.js\'></script>
<script src=\'https://luwes.github.io/vimeowrap.js/vimeowrap.playlist.js\'></script>
<script>
var output = \'$v\';
console.log(output)
vimeowrap(\'player\').setup({
urls: [
output
],
plugins: {
\'playlist\':{}
}
});
</script>
";
}
}
SO网友:Lucio Coire Galibone
这不是一个真正的Wordpress问题。然而,您可能需要implode php函数,使用逗号作为粘合剂。
foreach( $fields as $field ) {
$value = get_field( $field[\'name\'], \'user_\'. $author_id );
if(!empty($value)) {
if ($value) {
$v = implode(\',\', $value);
}
}
}
SO网友:phatskat
这可能会得到您想要的输出:
<?php
add_shortcode(\'training-player\', \'training_player\');
// Add shortcode for Diagnostic media playlist
function training_player() {
$author_id = get_the_author_meta(\'ID\');
$fields = acf_get_fields(405);
$js_values = [];
if( $fields ) {
echo \'<div id="player"></div>\';
foreach( $fields as $field ) {
$value = get_field( $field[\'name\'], \'user_\'. $author_id );
if(!empty($value)) {
if ($value) {
foreach ( $value as $v) {
$js_values[] = $v;
}
}
}
}
echo "
<script src=\'https://luwes.github.io/vimeowrap.js/vimeowrap.js\'></script>
<script src=\'https://luwes.github.io/vimeowrap.js/vimeowrap.playlist.js\'></script>
<script>
var output = " . wp_json_encode( $js_values ) . ";
console.log(output)
vimeowrap(\'player\').setup({
urls: [
output
],
plugins: {
\'playlist\':{}
}
});
</script>
";
}
}
我们正在存储
$v
在
$js_values
数组,然后使用
wp_json_encode
而不是直接将其放入Javascript。
为便于将来参考,您可能需要查看[wp_localize_script](https://developer.wordpress.org/reference/functions/wp_localize_script/)
从PHP到Javascript的“WordPress方式”获取值,并使用[wp_enqueue_script](https://developer.wordpress.org/reference/functions/wp_enqueue_script)
, 但这超出了这个答案的范围。