我使用Magic Fields 2多复选框来存储可以分配给案例研究的服务。数据在WordPress中以序列化数组的形式存储,我需要一些帮助来提取“相关帖子”。
我知道不能简单地将数组用作meta\\u值(WordPress根本不支持它),所以我必须使用多个循环或在循环中添加自定义代码。
这是我目前掌握的代码:
<?php
$related_case_study_args = array(
\'post_type\' => \'case-studies\',
\'posts_per_page\' => \'-1\', // get all posts
);
$related_case_study_loop = new WP_Query($related_case_study_args);
if ( $related_case_study_loop->have_posts() ) :
?>
<p>See Related Case Studies:</p>
<?php
while ( $related_case_study_loop->have_posts() ) : $related_case_study_loop->the_post();
?>
<p class="related"><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></p>
<?php
endwhile; endif;
wp_reset_query();
?>
这很好,并吸引了每一个案例研究。在每个案例研究中,都有需要过滤的个别服务。如何获取meta\\u值、提取它并仅显示相关的条目?
我尝试在“while”语句中使用此代码,只是为了查看数据是否正确返回,但没有成功:
// returns an array as this is a multicheck field in Magic Fields 2
$services = get_post_meta($post->ID, \'services\', true);
// foreach item in the array
foreach ($services as $service) {
if ( sanitize_title($service_title) == sanitize_title($service) ) {
echo \'<p>\' . esc_attr($service) . \'</p>\';
}
}
如果您有任何帮助,我们将不胜感激!
非常感谢,
詹姆斯
SO网友:Rutwick Gangurde
如果你在while
循环,使用get\\u the\\u ID()。
// returns an array as this is a multicheck field in Magic Fields 2
if(get_post_meta(get_the_ID(), \'services\', true)){
$services = get_post_meta(get_the_ID(), \'services\', true);
$services = maybe_unserialize($services);
// foreach item in the array
foreach ($services as $service) {
if ( sanitize_title($service_title) == sanitize_title($service) ) {
echo \'<p>\' . esc_attr($service) . \'</p>\';
}
}
} else {
//No services set
}
检查此项。顺便说一句,您可以将数组设置为元字段值(但通过使用add\\u post\\u meta的代码,而不是后期编辑屏幕上的via post meta框)。