因此,我尝试使用foreach从多篇帖子中的自定义字段中提取内容,但这行不通。我可以让它用于一个简单的textarea字符串,但我很难让它用于数组。这是字符串的工作代码:
$posts = get_posts(array(
\'numberposts\' => -1,
\'post_type\' => \'post\',));
foreach($posts as $post)
{
$string = get_post_meta($post->ID, \'simple_string\', true);
echo $string;
}
在站点的其他地方,此代码用于进入特定的posts自定义字段数组:
$arr = get_field(\'array\');
$arr2 = $arr[0][\'string\'];
$string = implode(", ",$arr2);
echo $string;
为什么这样不行?
$posts = get_posts(array(
\'numberposts\' => -1,
\'post_type\' => \'post\',));
foreach($posts as $post)
{
$arr = get_post_meta($post->ID, \'array\', true);
$arr2 = $arr[0][\'string\'];
$string = implode(", ",$arr2);
echo $string;
}
提前感谢您的关注。
SO网友:user1721230
我使用的自定义字段来自插件ACF(高级自定义字段)。
最后,我查看了ACF网站,我本来应该这样做的,发现函数get\\u字段可以指定帖子,所以下面是工作代码:
$posts = get_posts(array(
\'numberposts\' => -1,
\'post_type\' => \'post\',));
foreach($posts as $post)
{
$arr = get_field(\'array\', $post->ID);
$arr2 = $arr[0][\'string\'];
$string = implode(", ",$arr2);
echo $string;
}
SO网友:Justin Waulters
是的,get_field()
更容易,但是get_post_meta()
几乎总是表现得更好,因为get_field()
使用更多数据库查询。
如果我没记错的话,它是这样工作的:
$posts = get_posts(
array(
\'numberposts\' => -1,
\'post_type\' => \'post\',
)
);
foreach($posts as $post) {
$serialized_string = get_post_meta( $post->ID, \'array\', true );
$arr = unserialize( $serialized_string ); // unserialize it here
$arr2 = $arr[0][\'string\']; // assuming this is a valid index
$string = implode( ", ", $arr2 );
echo $string;
}
如果不起作用,请
var_dump()
属于
$serialized_string
并发布结果。
干杯