Php 从高级自定义字段创建WordPress库快捷码

Php 从高级自定义字段创建WordPress库快捷码,php,wordpress,advanced-custom-fields,Php,Wordpress,Advanced Custom Fields,我将按照ACF Gallery页面中的说明,在如何使用快捷码创建本机Wordpress Gallery,并根据ACF Gallery字段中的数据动态填充项目ID 例如: 编辑:我稍微修改了代码以包含$image\u id <?php // Load value (array of ids). $images = get_field('product_images'); $image_ids = get_field('product_images', false, false); if(

我将按照ACF Gallery页面中的说明,在如何使用快捷码创建本机Wordpress Gallery,并根据ACF Gallery字段中的数据动态填充项目ID

例如: 编辑:我稍微修改了代码以包含
$image\u id

<?php

// Load value (array of ids).
$images = get_field('product_images');
$image_ids = get_field('product_images', false, false);

if( $images ) {

    // Generate string of ids ("123,456,789").
    $images_string = implode( ',', $image_ids );

    // Generate and do shortcode.
    $shortcode = sprintf( '', $images_string );
    echo do_shortcode( $shortcode );
}

产品形象
此代码确实有效,但在jetpack carousel中返回一个错误
php通知数组到字符串的转换。是的,我正在使用“没有Jetpack的平铺画廊旋转木马”插件


我真的很想遵循ACF文档中列出的推荐方法,但它不适合我。我做错了什么?

我没有安装ACF,但在阅读了他们的手册后,我发现您的代码有一些问题

问题一:您同时使用$images和$images\u id。最终,它们都在做相同的工作,那就是为您取回ids阵列。他们的数据可能与前两个参数不同

尽管如此,当您检查是否存在某些内容时,您可以使用$images进行检查和计算,但随后将$images\u id用于短代码字符串的合成。对于这个错误,我认为这是因为没有可选参数的版本返回了一个值,而使用可选参数的($images\u id)没有返回值,但if子句仍然在使用它

我想你必须弄清楚,你想用哪个get_字段版本。有3个参数的那个或有1个参数的那个

这是在我注意到一些东西后编辑的,关于为什么你没有得到任何东西,你可能想联系ACF更新他们的手册。这个sprintf()语句不会做任何事情。它只会生成一个空白字符串。您可能需要像下面这样修改sprintf()以遵循旧语句,如果它仍然显示数组到字符串的转换错误,您需要调试它

$image_ids = get_field('product_images', false, false);

if( $image_ids ) {

    // Generate string of ids ("123,456,789").
    $images_string = implode( ',', $image_ids );

    // Generate and do shortcode.
    $shortcode = sprintf( '[gallery ids="%s"]', $images_string );
    echo do_shortcode( $shortcode );
}

我可以看到$image\u id来自
$image\u id=get\u字段('product\u images',false,false)现在。错误已消失,但未显示任何图像库。是的,两个变量都声明了相同的内容(带/不带可选参数)。你的建议很有用。至于字符串转换错误-我认为这与“没有Jetpack的平铺画廊”直接相关plugin@RyanCoolwebs-我很高兴我的建议很有用。谢谢。如果它对其他人有帮助的话——就像我对它感到困惑的那样——短代码就是[gallery]。
$image_ids = get_field('product_images', false, false);

if( $image_ids ) {

    // Generate string of ids ("123,456,789").
    $images_string = implode( ',', $image_ids );

    // Generate and do shortcode.
    $shortcode = sprintf( '[gallery ids="%s"]', $images_string );
    echo do_shortcode( $shortcode );
}