0

我在 Wordpress 上有一个网站。我的子页面上显示了一个菜单。一切正常。我还有一个格式的索引 A、B、C 等。在我的 css 中,一切都是大写的。它适用于 Chrome、Firefox,但不适用于 Safari,例如,我的菜单中的选项是小写的。所以我需要自己在大写中输入我的页面标题......这不是我猜的最佳解决方案......所以我想添加一个 php 函数来大写我的 post_title 而不是使用 CSS 来做到这一点。我知道我可以使用“strtoupper”功能,但我不知道在这种情况下该使用谁:

echo '<select name="" onchange="location = this.options[this.selectedIndex].value;">';

这是构建菜单的完整 php 代码:

<div class="styled-select">
<?php

if(!$post->post_parent){

    $children = get_pages(array(
        'child_of' => $post->ID,
        'post_type' => 'page',
        'post_status' => 'publish',
        'sort_order' => 'ASC',
        'sort_column' => 'post_title',
    ));

}else{

    $children = get_pages(array(
        'child_of' => $post->post_parent,
        'post_type' => 'page',
        'post_status' => 'publish',
        'sort_order' => 'ASC',
        'sort_column' => 'post_title',
    ));
}

if ($children) {
    echo '<select name="" onchange="location = this.options[this.selectedIndex].value;">';
    echo '<option>'. 'A - Z' .'</option>';

    function getInitials($name){
    //split name using spaces
    $words=explode(" ",$name);
    $inits='';
    //loop through array extracting initial letters
    foreach($words as $word){
        $inits = strtoupper(substr($word,0,1));
        break;
    }
    return $inits; 
}
$currval = "";

    foreach($children as $child){
        //print_r($child);
        $permalink = get_permalink($child->ID);
        $initial = getInitials($child->post_title);
        if($initial!='' && $currval != $initial ) {
            $currval = $initial;
            echo '<optgroup label="'.$initial.'""></optgroup>';
        }
        echo '<option value="'.$permalink.'">'.$child->post_title.'</option>';
    }
    echo '</select>';


} ?>


<!-- FIN MENU DEROULANT A-Z -->


</div>

这是一个jsfiddle:http: //jsfiddle.net/3LZEt/

如果有人可以帮助我!多谢。

4

1 回答 1

0

显示的选项文本不应与您的重定向没有发生任何关系。

我是否正确理解重定向确实是困扰您的问题?你试过 safari mobile 吗?如果是这样,它不支持 onchange,但 onblur

echo '<select name="" onblur="location = this.options[this.selectedIndex].value;">';

但这打破了我认为的其他浏览器,因此需要切换工作浏览器和非工作浏览器,以便为一个浏览器 onchange 和另一个为 onblur 。

编辑 请看这部分,你有你的帖子标题

foreach($children as $child){
    //print_r($child);
    $permalink = get_permalink($child->ID);
    $initial = getInitials($child->post_title);
    if($initial!='' && $currval != $initial ) {
        $currval = $initial;
        echo '<optgroup label="'.$initial.'""></optgroup>';
    }
    echo '<option value="'.$permalink.'">'.$child->post_title.'</option>';
}

所以,改用这个

foreach($children as $child){
    //print_r($child);
    $permalink = get_permalink($child->ID);
    $post_title = strtoupper($child->post_title);
    $initial = getInitials($child->post_title);
    if($initial!='' && $currval != $initial ) {
        $currval = $initial;
        echo '<optgroup label="'.$initial.'""></optgroup>';
    }
    echo '<option value="'.$permalink.'">'.$post_title.'</option>';
}
于 2013-10-12T11:53:37.467 回答