我是一个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)上显示的顺序列出?请记住,他们不会总是被检查。
我试过搞乱反序列化,但我对此不太了解。
任何帮助或正确方向的观点都将不胜感激! 感谢
答案 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';}
如果你向数组添加一个值(添加一个新的税收条款),它就不那么灵活了,直到你在循环中检查它才会开始显示。我猜这不会是一个问题,因为这看起来像是一组非常有限的选择。