Primer主题的两个小Bug

无意中又发现Primer主题的几个小Bug,让强迫症的yellowko受不了(*  ̄︿ ̄)

文章日期显示

这个Bug是这样的

 

居然有一篇文章不显示日期了!!

看样子这个位置的问题应该得从index.php下手,打开文件后发现了这个:

<?php while ( have_posts() ) : the_post(); ?>
		<?php get_template_part( 'content', get_post_format() ); ?>
<?php endwhile; ?>

这个看起来是确定当页面为发布页时就从content.php获取页面的版式,所以顺藤摸瓜,打开它,找到这一句

<?php
/**
 * Fires after templates/parts/loop/post template
 * @hooked primer_add_post_meta - 10
 * @since 1.0.0
 */
do_action( 'primer_after_post_title_template' );
?>

然后通过查找Godaddy的文档,定位到/inc/hooks.phpprimer_add_post_meta()函数,是这样的:

function primer_add_post_meta() {
	get_template_part( 'templates/parts/loop/post', 'meta' );
}
add_action( 'primer_after_post_title_template', 'primer_add_post_meta' );

那么接下来就是templates/parts/loop/post-meta.php这一个文件,终于找到了罪魁祸首:

<?php if ( is_new_day() ) : ?>
	<span class="posted-date"><?php the_date()  ?></span>
<?php endif; ?>

这里判断了是否为新的日期,也就是说只有日期不同时才会获取日期,那么,愉快地把判断条件删掉。啊咧, Bug似乎还是没有解决,还变得很奇怪的说

为此yellowko去查了WordPress里the_data()这个函数的说明,结果发现他说明了即便多次使用也只输出一次,但是下面写了解决办法,就是直接调用get_the_date(),所以在把代码改成这样后问题就顺利解决了

<?php if ( is_new_day() ) : ?>
		<span class="posted-date"><?php echo get_the_date()  ?></span>
<?php endif; ?>

标签页文章摘要变红

这是第二个小Bug,随便找了一个文章标签打开后,发现里面所有的文章摘要都变成了红色(这是中邪了吗。。。)

通过Chrome的开发者工具,找到摘要的这行被添加了prettify.css.tag的样式,这个文件不就是之前添加的代码高亮插件的css吗?!!

为什么其他页面就没有出现这种问题呢?敏锐的Yellowko Sherlock发现,tag不就是标签吗,这个页面就是标签页啊,或许就是它导致了摘要变红,搜索tag,发现了<body>里面就有一个classtag,删掉以后就没有加载prettify.css了。

那么解决方案呢?总不能这么暴力地解决吧。。。删掉.tag这个样式也不是办法,那么既然只在文章里写代码,就只让文章包含prettify就好啦!之前的操作详见前一篇文章

由于文章页使用的是single.php这个文件,所以只要在加载高亮脚本前判断是否为single页就可以实现只在文章页加代码高亮脚本啦,在header.php里面修改为:

<?php if(is_single()): ?>
	<script src="<?php bloginfo('template_directory'); ?>/gcp/prettify.js"></script>
	<link href="<?php bloginfo('template_directory'); ?>/gcp/prettify.css" type="text/css" rel="stylesheet" />
<?php endif; ?>

footer.php里修改为这样:

<?php if(is_single()):?>
	<script type="text/javascript">prettyPrint();</script>
<?php endif; ?>

问题成功解决!

 

关于 “Primer主题的两个小Bug” 的 2 个意见

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据