Theme_Name_Setup()中具体应该包含哪些内容?

时间:2014-07-09 作者:Caspar

我“继承”了一个旧主题的发展,现在我正在加速WP 3.9的开发。主题代码附带functions.php 它有一个函数theme\\u name\\u setup(),该函数与after\\u theme\\u setup挂钩。到目前为止,一切顺利。然而,似乎几乎所有的东西都被放入了theme\\u name\\u setup()函数,以及管理页面的所有其他主题文件、模板函数、样式函数、自定义标题、小部件等,所有这些都被称为(通过require_once) 从this theme\\u name\\u setup()中,因此所有内容都将加载到after\\u theme\\u setup挂钩上。

我研究了其他主题(默认的2012、-13、-14和下划线),它们有一个更干净的theme\\u setup()函数,我知道,将所有函数中的函数挂在同一个挂钩上是一个等待发生的火车失事(虽然主题现在看起来确实可以这样操作)。我有一些默认主题的例子可供参考,但我想知道的(似乎无法通过全能的谷歌找到)是:

除了add\\u theme\\u support()、textdomain/本地化注意事项、register\\u nav\\u menus()和缩略图支持之外,如果有什么需要,应该特别包括在theme\\u name\\u setup()函数中,如上所述连接?(而且,通过扩展,其他所有内容都应该在其他地方定义/挂钩。)

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

没有什么A.theme_name_setup() 函数甚至不应该存在。

  1. The name is too vague. 什么是setup 意思是这也是您的问题的根源,因为这样的名称并没有告诉我们函数的作用。可能是任何东西,也可能什么都不是。从技术上讲,主题甚至不需要functions.php. 但它们是有效的,通过WordPress进行设置。

  2. It violates the principle of single responsibility. 这个术语来自面向对象编程,但这个概念适用于所有好的代码,它甚至是UNIX philosophy: 做一件事,把它做好<这就引出了下一个问题。

  3. It impairs interoperability. 考虑以下功能:

    add_action( \'after_setup_theme\', \'theme_name_setup\' );
    
    function theme_name_setup() {
        require \'widgets.php\';
        require \'comment-enhancements.php\';
        require \'javascript.php\';
    }
    
    我要做什么才能只加载widgets.phpjavascript.php 在我的孩子主题中?我必须解开广泛的函数并重复部分代码。然后我祈祷你永远不会在更新父主题时重命名、合并或拆分文件。

    要以更积极的方式表达这一点,请执行以下操作:

    给每个类和函数起一个名称,告诉读者它是做什么的。如果您不能想出一个好的、精确的名称,那么这段代码可能做得太多了。

    您可以将同一挂钩用于多个回调。这就是操作/过滤器API的要点。使用它。

    试着让每个函数返回一个有用的值,这样您就可以单独测试和调试它了。load_theme_textdomain() 例如,返回TRUE 找到文件时,FALSE 否则如果使用单独的函数加载翻译,则可以使用该返回值。

结束

相关推荐

来自WooThemes的快照主题-空的‘alt’属性

我正在使用WooThemes的快照主题。调整大小(宽度、高度和大小,以kb为单位)并显示图像(一个“a”标记,包装一个“img”标记)的代码如下:<?php if ( get_option(\'woo_resize\') ) { woo_get_image(\'image\',\'210\',\'280\');?> 问题是:我在发帖时设置了“alt”文本,当试图查看帖子图片源代码时,“alt”属性显示为空。以前有人通过过这个吗?有什么建议吗?我希望具有“alt”属性的帖子是第一行第