突出显示Single.php上的存档链接

时间:2014-12-09 作者:Medardaosa

有机会在单页上突出显示经典wp archive小部件中的存档链接。php模板?

我有相同的存档模板。php和single。我调用的php

<?php wp_custom_archive(); ?>
它是定制的wp归档文件,突出显示当前链接(放在functions.php中):

function wp_custom_archive($args = \'\') {
global $wpdb, $wp_locale;

$defaults = array(
    \'limit\' => \'\',
    \'format\' => \'html\', \'before\' => \'\',
    \'after\' => \'\', \'show_post_count\' => false,
    \'echo\' => 1
);

$r = wp_parse_args( $args, $defaults );
extract( $r, EXTR_SKIP );

if ( \'\' != $limit ) {
    $limit = absint($limit);
    $limit = \' LIMIT \'.$limit;
}

$archive_date_format_over_ride = 0;
$archive_day_date_format = \'Y/m/d\';
$archive_week_start_date_format = \'Y/m/d\';
$archive_week_end_date_format   = \'Y/m/d\';

if ( !$archive_date_format_over_ride ) {
    $archive_day_date_format = get_option(\'date_format\');
    $archive_week_start_date_format = get_option(\'date_format\');
    $archive_week_end_date_format = get_option(\'date_format\');
}

$where = apply_filters(\'customarchives_where\', "WHERE post_type = \'post\' AND post_status = \'publish\'", $r );
$join = apply_filters(\'customarchives_join\', "", $r);

$output = \'<ul>\';

    $query = "SELECT YEAR(post_date) AS `year`, MONTH(post_date) AS `month`, count(ID) as posts FROM $wpdb->posts $join $where GROUP BY YEAR(post_date), MONTH(post_date) ORDER BY post_date DESC $limit";
    $key = md5($query);
    $cache = wp_cache_get( \'wp_custom_archive\' , \'general\');
    if ( !isset( $cache[ $key ] ) ) {
        $arcresults = $wpdb->get_results($query);
        $cache[ $key ] = $arcresults;
        wp_cache_set( \'wp_custom_archive\', $cache, \'general\' );
    } else {
        $arcresults = $cache[ $key ];
    }
    if ( $arcresults ) {
        $afterafter = $after;
        foreach ( (array) $arcresults as $arcresult ) {
            $url = get_month_link( $arcresult->year, $arcresult->month );
            $year_url = get_year_link($arcresult->year);
            $text = sprintf(__(\'%s\'), $wp_locale->get_month($arcresult->month));

            $year_text = \'<span class="year">\'.sprintf(\'%d\', $arcresult->year).\'</span>\';
            if ( $show_post_count )
                $after = \'&nbsp;(\'.$arcresult->posts.\')\' . $afterafter;
            $year_output = get_archives_link($year_url, $year_text, $format, $before, $after);              
            $output .= ( $arcresult->year != $temp_year ) ? $year_output : \'\';
            $output .= get_archives_link($url, $text, $format, $before, $after);

            $temp_year = $arcresult->year;
        }
    }

$output .= \'</ul>\';


if ( $echo )
    echo $output;
else
    return $output;
这很管用,但不适合单身。php模板。单打。php没有突出显示任何内容。有人知道我错过了什么吗?

1 个回复
最合适的回答,由SO网友:Nicolai Grossherr 整理而成

因为您的链接是由get_archives_link(), 这是你必须去看的地方。通过检查source , 你会注意到get_archives_link() - 本身-不允许添加CSS类来进行高亮显示。

当然有过滤器挂钩get_archives_link - 或查看source - 可以用来做这个。但正如您所见,唯一可用的信息是完整的链接html输出-$link_html - 这几乎迫使您执行一些正则表达式来提取URL,然后检查它是否合适,并在输出中添加一个类。这是一种方法,你可以在这里或那里找到如何做到这一点的信息。

但是,如果我们诚实的话,那就不太好了,因为谁真的想一直做RegEx呢?这真的不值得。所以就个人而言my_own_archives_link() 函数,您可以在那里实现根据需要添加高亮显示类的可能性。

结束

相关推荐

根据作者在Single.php上隐藏某些部分

我想在作者的基础上隐藏一些部分。我的要求是,我有一个工作板的主题和用户可以张贴的工作。所以在详细页面中有“如何应用”部分。现在,我想使用一个名为“聚合器”的作者从其他工作站点feed自动发布。他扮演一个叫“聚合者”的角色。所以我想隐藏“如何应用”部分,如果文章作者的角色是“聚合器”。我可以知道如何获取和检查post-author角色吗?谢谢Alex