无意中又发现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.php的primer_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>里面就有一个class是tag,删掉以后就没有加载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; ?>
问题成功解决!
恩,我的室友说我的朋友真棒。
感谢,笔芯233333