0

所以我在这个项目中使用了 WordPress,我不太确定如何进行这个整洁干净的 .

我一共有8个选项。如果其中任何一个被设置,我需要一些事情发生。我还需要为每一组执行它。

让我们使用两个,现在

if( (genesis_get_option('setting_one', 'settings') || genesis_get_option('setting_two', 'settings')) !== '')
    { // print() each one that is set }

您可以看到以这种方式处理 8 个选项会很快变得非常难看。我所有的设置都有一个相同的前缀:( setting_a, setting_b, setting_one, setting_two)

我在类似的东西

$settings = array_fill(1, 8, 'setting_');
$labels = array(1 => 'a', 'b', 'c', 'd', 'one', 'two', 'three', 'four');

....但后来我不知道从那里去哪里。

必须有某种干净的方法来做到这一点?

4

2 回答 2

2

一种更简洁的方法是:

$settings = array("setting_one","setting_two","setting_a");
$has_setting = false;
foreach($settings as $setting){
    if(genesis_get_option($setting, 'settings') !== ''){
        $has_setting = true;
        break;
    }
}
if($has_setting){
    //Do stuff
}

更好的办法是将检查放入一种保持代码整洁的方法中。

编辑:刚刚意识到您需要为每个设置采取行动。在这种情况下,您可以在循环内执行此操作。

于 2013-01-22T01:25:14.840 回答
0
if(false !== array_search(true,
  array_map(
    'genesis_get_option',
    array('setting_one', 'setting_to' /* ... */ ),
    array('value_one', 'value_two' /* ... */)
  )
)) { /* ... */ }
于 2013-01-22T01:28:42.157 回答