2

我是 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-对于第二个等等)

这是输出“服务呈现”的存档页面的代码:

<?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)?请记住,它们不会总是被检查。

我试过搞乱反序列化,但我对此知之甚少。

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

4

1 回答 1

0

这篇文章可能很有趣。这是我见过的不涉及编辑 Wordpress 核心文件的少数解决方案之一。

您还可以尝试这个修改后的 get_post_custom 函数,该函数按元 ID 对键/值对进行排序,而不是由get_post_custom.

第三种选择是筛选这个答案

更新:愚蠢的我!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";
}

如果您想学习更复杂的数组排序,请成为我的客人。我?我会坚持ABC。

更新:愚蠢的你! 为了回应您关于检查和显示$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';}

它不太灵活,因为如果您向数组添加一个值(添加一个新的税收条款),它不会开始显示,直到您在循环中检查它。不过,我猜这不会成为问题,因为这似乎是一组非常有限的选项。

于 2012-09-18T19:29:25.097 回答