Wordpress特定顺序的echo post元复选框

时间:2012-09-18 16:28:21

标签: php arrays wordpress

我是一个php新手和第一次海报。

我正在一个wordpress网站上工作,我需要一个唱片 我成功了:
创建了我的自定义帖子类型:相册
为管理员发布编辑页面添加了自定义元框和自定义字段 制作了一个存档页面并回显了所有自定义字段元。

http://squarerecording.com/albums/

我的一个自定义字段是一系列5个复选框:该存档页面上每个相册的最后一行

array(
                'name'    => 'Services Rendered',
                'desc'    => 'field description (optional)',
                'id'      => $prefix . 'services',
                'type'    => 'multicheck',
                'options' => array(
                    'R' => 'Recorded',
                    'Mi' => 'Mixed',
                    'Ma' => 'Mastered',
                    'P' => 'Produced',
                    'RMV' => 'Re-mastered for vinyl',
                ),
            ),

虽然我以逗号分隔的格式成功回应了“服务渲染”,但每个帖子的顺序不同(P,RMV,R,Mi,Ma-第一个,P,Ma,Mi,R, RMV-第二个,等等。)

以下是输出“Services Rendered”的存档页面的代码:

<?php $key="sqr_services";  get_post_meta($post->ID, $key); 
 $sqr_services = get_post_meta( $post->ID, $key );
 $comma_sep_services = implode(",", $sqr_services );
    echo $comma_sep_services; 
?>

我的问题是:我需要做什么才能按照它们在编辑页面(R,Mi,Ma,P,RMV)上显示的顺序列出?请记住,他们不会总是被检查。

我试过搞乱反序列化,但我对此不太了解。

任何帮助或正确方向的观点都将不胜感激! 感谢

1 个答案:

答案 0 :(得分:0)

This post可能会引起人们的兴趣。这是我见过的少数几个不涉及编辑Wordpress核心文件的解决方案之一。

您还可以尝试通过元ID而不是get_post_custom返回的“修改日期”顺序对键/值对进行排序的this modified get_post_custom function

第三种选择是筛选this answer

更新:愚蠢的我! PHP可以按照你想要的任何方式对数组进行排序,当它不是数字或字母时,它只会变得有点棘手。如果字母顺序适合您,请尝试以下操作:

$key="sqr_services";  
get_post_meta($post->ID, $key); 
$sqr_services = get_post_meta( $post->ID, $key );
asort($sqr_services);
foreach ($sqr_services as $key => $val) {
    echo "$val\n";
}

如果您想学习更复杂的数组排序,be my guest。我?我会坚持使用ABCs。

更新:傻傻的你! 在回复您关于在$sqr_services数组中检查和显示各个值的评论时,您需要做的就是检查in_array()

if (in_array('Recorded', $sqr_services)){echo 'Recorded';}
if (in_array('Mixed',$sqr_services)){echo 'Mixed';}
if (in_array('Mastered',$sqr_services)){echo 'Mastered';}
if (in_array('Produced',$sqr_services)){echo 'Produced';}
if (in_array('Re-mastered for vinyl',$sqr_services)){echo 'Re-mastered for vinyl';}

如果你向数组添加一个值(添加一个新的税收条款),它就不那么灵活了,直到你在循环中检查它才会开始显示。我猜这不会是一个问题,因为这看起来像是一组非常有限的选择。