Wordpress A-Z帖子

时间:2014-08-25 20:56:01

标签: php wordpress

嗨,我有这个,我不知道我错在哪里我不是一个php编码器,但我觉得有帮助可以工作

add_action('init', 'set_index_var');
function set_index_var()
{
    global $azindex;
    $tmp = get_query_var('azindex');

    if($tmp != "")
        $azindex = $tmp;
}

//Add WHERE addition to query 
add_filter( 'posts_where' , 'azindex_posts_where',10,2 );

function azindex_posts_where( $where, &$wp_query) {
    global $wpdb;
    global $azindex;
    //global $azindextype;

    //var_dump($wpdb);

    if(isset($azindex)  )
        $where .= " AND {$wpdb->posts}.post_title LIKE '{$azindex}%' ";

    return $where;
}
/********************************************************************/
/* FILTERS                                                          */
/********************************************************************/
// Add the query var azindex so WP won't drop it
add_filter( 'query_vars', 'azindex_add_query_vars');

function azindex_add_query_vars($vars){
    $vars[] = "azindex";
    return $vars;
}
/********************************************************************/
/* MAIN CODE                                                        */
/********************************************************************/
function azindex_get_alphabetical_index(  )
{
    $azindex = get_query_var('azindex');

    if($azindex == '')
        $azindex = -1;

    $base_url = get_permalink(get_the_ID());

    for($i=0;$i<26;$i++)
    {
        $letter[$i] = chr($i + 65);

        $href = $base_url.'index.php?azindex='.$letter[$i];
        $base_add = '';

        if($azindex == "")  //Not selected -> link
            echo '<div><a href="'.$href.'">'.$letter[$i].'</a></div>';
        else if($azindex == $letter[$i])
            echo '<div class="selected" >'.$letter[$i].'</div>';
        else
            echo '<div><a href="'.$href.'">'.$letter[$i].'</a></div>';
    }

    if($azindex == -1)
        echo '<div class="all" >All</div>';
    else
        echo '<div><a href="'.$base_url.'">All</a></div>';
}

我可以在索引上显示字母分页,但是当我点击字母时,它总是将我发送到新的帖子单页。 反正是保留索引并显示选定的字母帖子而不是单页?

1 个答案:

答案 0 :(得分:0)

现在我将该代码改为:

//Register the NUMERIC Index shortcode [numindex]
$numindex = '';

add_shortcode('numindex','numindex_get_filter');
function numindex_get_filter($attr){

    echo '<div class="numindex clearfix">';
    numindex_get_numeric_index(); 
    echo '</div>';
}

/********************************************************************/
/* ACTIONS                                                          */
/********************************************************************/

//Add WHERE addition to query 
add_filter( 'posts_where' , 'numindex_posts_where',10,2 );

function numindex_posts_where( $where, &$wp_query) {
    global $wpdb;
    global $numindex;
    //global $numindextype;

    //var_dump($wpdb);

    if(isset($numindex) )
        $where .= " AND $wpdb->posts.post_title REGEXP '^[0-9]{1,10}' ";

    return $where;
}
/********************************************************************/
/* FILTERS                                                          */
/********************************************************************/
// Add the query var numindex so WP won't drop it
add_filter( 'query_vars', 'numindex_add_query_vars');

function numindex_add_query_vars($vars){
    $vars[] = "numindex";
    return $vars;
}
/********************************************************************/
/* MAIN CODE                                                        */
/********************************************************************/
function numindex_get_numeric_index(  )
{
    $numindex = get_query_var('numindex');

    if($numindex == '')
        $numindex = -1;

    $base_url = get_site_url();

    for($i=0;$i<26;$i++)
    {
        $letter[$i] = chr($i + 65);

        $href = $base_url.'/index.php?numindex='.$letter[$i];
        $base_add = '';

        if($numindex == "") //Not selected -> link
            echo '<div><a href="'.$href.'">'.$letter[$i].'</a></div>';
        else if($numindex == $letter[$i])
            echo '<div class="selected" >'.$letter[$i].'</div>';
        else
            echo '<div><a href="'.$href.'">'.$letter[$i].'</a></div>';
    }

    if($numindex == -1)
        echo '<div class="all" >test</div>';
    else
        echo '<div><a href="'.$base_url.'">test</a></div>';
}

它列出了我所有的数字标题帖,但现在我可以将#charachter作为链接:)它显示我所有的字母。而不是字母表我想只显示一个链接为0-9或#