wordpress使用twentyfifteen模板做子主题所遇问题的解决及记录
内容提要
使用WordPress twentyfifteen主题时,直接修改父主题会在升级后失效,应改用子主题。作者记录了两种修改:一是让首页文章列表显示摘要而非全文,需复制content.php并将the_content改为the_excerpt,再调整index.php及摘要字数;二是修改英文标签(如Edit、Next、Previous、Continue reading等),通过子主题functions.php重定义相关函数实现,中文需转UTF-8编码。
延伸解读
子主题修改的必要性
文章指出直接修改父主题会在升级后失效,因此推荐使用子主题。子主题的修改独立于父主题,父主题升级不会覆盖子主题的改动,这能有效保护自定义设置,避免重复劳动。
首页摘要显示的实现步骤
要让首页显示摘要而非全文,需复制父主题的content.php并重命名为content-excerpt.php,将the_content改为the_excerpt,再修改index.php中的get_template_part调用为content-excerpt。摘要字数可通过修改wp-includes.php中的excerpt_length参数调整。
英文标签的修改方法
对于Edit、Next、Previous等直接写在模板文件中的标签,可在子主题的content.php或single.php中直接修改。而Continue reading等通过函数输出的标签,需复制父主题的functions.php到子主题,并重定义相关函数,如twentyfifteen_excerpt_more,修改其中的文本并确保UTF-8编码。
编码注意事项
修改英文标签为中文时,必须将中文字符转换为UTF-8编码,否则页面会显示乱码。这一点在直接修改模板文件或函数中的字符串时都需注意,是保证中文正常显示的关键。
Q&A
为什么修改WordPress主题后升级会失效?
直接修改父主题,在主题升级后修改会丢失,因为升级会覆盖文件。推荐使用子主题进行修改,这样父主题升级不会影响子主题的修改。
如何让twentyfifteen主题首页显示文章摘要而不是全文?
复制父主题的content.php为content-excerpt.php,将the_content改为the_excerpt;然后在子主题的index.php中将get_template_part( 'content', get_post_format() )改为get_template_part( 'content-excerpt', get_post_format() )。
如何调整twentyfifteen主题摘要显示的字数?
修改WordPress目录下的wp-includes.php文件(实际为wp-includes/formatting.php或通过过滤器),找到$excerpt_length = apply_filters( 'excerpt_length', 55 );,将数字55改为你想要的字数。
在twentyfifteen子主题中如何修改英文标签如Edit、Next、Previous?
这些标签可以直接在子主题目录中的content.php或content-excerpt.php和single.php文件中找到对应英文修改。如果使用中文,需转换为UTF-8编码,否则显示乱码。
如何修改twentyfifteen主题的“Continue reading”标签?
复制父主题的functions.php到子主题并清空,然后从父主题的inc/template-tags.php中复制twentyfifteen_excerpt_more函数到子主题的functions.php,修改其中的'Continue reading %s'为中文(需UTF-8编码)。
为什么在子主题中不能直接复制inc/template-tags.php文件来修改?
因为twentyfifteen主题的英文标签直接写在inc/template-tags.php中,但子主题不能直接复制该文件来覆盖,需要通过functions.php重定义相关函数来实现修改。