返回带有短码的数组

时间:2019-10-09 作者:LovinQuaQua

我有一些字段,我想用一个属性的短代码打印出来。我有普通变量和数组,我的代码只打印数组的第一个值。。。should i use implode?

function leweb_test( $atts ) {
  $atts = shortcode_atts( array(
            \'field\' => \'user_email\',  
  ) , $atts );

  $value = um_user( $atts[\'field\'] );

  if( is_array( $value ) == TRUE ) {

    foreach( $value AS $field ) {
      return $field;
    }
  } else { 
      return $value;
  }

}
add_shortcode( \'leweb_test_shortcode\', \'leweb_test\' );

1 个回复
最合适的回答,由SO网友:Krzysiek Dróżdż 整理而成

Shortcode应该返回字符串,以便附加到内容中。无法返回数组,因为它无法正确打印。

因此,如果您的短代码应该返回一个数组,那么您必须弄清楚这些数据应该如何格式化。

一种方法是使用逗号分隔值:

return implode( \', \', $value );
另一种方法是将其格式化为列表(ul/ol):

$result = \'<ul>\';
foreach ( $values as $item ) {
    $result .= \'<li>\' . esc_html( $item ) . \'</li>\';
}
$result .= \'</ul>\';
 return $result;
代码最大的问题是在foreach循环中使用return。如果函数返回任何内容,那么它将停止工作并退出。因此,如果您这样做:

foreach( $value AS $field ) {
  return $field;
}
然后,您确切地说应该遍历数组,并且在第一次迭代中应该返回值(因此函数应该在它之后停止工作)。所以是-此循环将只返回数组的第一项。

相关推荐

错误:当使用IMAGE_SIZE_NAMES_CHOOSE时,CALLE_USER_FUNC_ARRAY()期望参数1为有效回调

我使用的示例来自add_image_size() | WordPress Developer Resources 尝试将自定义图像大小添加到管理媒体选择器。add_filter( \'image_size_names_choose\', \'my_custom_sizes\' ); function my_custom_sizes( $sizes ) { return array_merge( $sizes, array( \'your-custo