WordPress主题文件 functions.php

江河/ 2023年04月12日/ WordPress/ 浏览 1998

不管是WordPress经典主题还是WordPress块主题,functions.php 文件都是非常重要的。


functions.php文件用来为WordPress主题添加功能与特性。它可以用来连接WordPress的核心功能,使主题更加模块化、可扩展。


functions.php的表现和WordPress插件的表现极为相像,如果判断是将一个功能放到 functions.php 还是单独作为一个插件呢?


判断标准就是:这个功能是否与外观(样式、布局等)相关。如果与外观无关,最佳实践是作为一个插件提供。


在使用别人开发的主题时,可以随时在 functions.php 中添加功能代码。但是更好的方法是在子主题的 functions.php 中添加。这样做的好处是,别人的主题更新时,可随之更新,而不用担心自己添加的功能会随着更新而消失。


如果插件、父主题、子主题都提供的功能有冲突,那么会优先使用子主题的代码。也就是说加载顺序是:插件、然后是父主题、最后是子主题。


另一种更常见的冲突是:函数(类)命名冲突。


为了避免函数(类)命名冲突,最好的办法就是为自己的函数(类)加上前缀。比如你的主题名字叫:ZhuiGe,那么所有函数的名字都应该类似于:zhuige_function_name,所有的类都应该类似于:ZhuiGe_Class_Name。此外,最好再加上 function_exists\class_exists 判断。


// 如果函数不存在,再定义函数
if (!function_exists('zhuige_function_name')) {
    function zhuige_function_name() {
        // ……
    }
}

// 如果类不存在,再定义类
if (!class_exists('ZHuiGe_Class_Name')) {
    class ZHuiGe_Class_Name {
        // ……
    }
}


最后是一个functions.php的示例:


if (!isset($content_width)) {
    $content_width = 800; /* pixels */
}

if (!function_exists('myfirsttheme_setup')) :

    function myfirsttheme_setup()
    {
        load_theme_textdomain('myfirsttheme', get_template_directory() . '/languages');

        add_theme_support('automatic-feed-links');

        add_theme_support('post-thumbnails');

        register_nav_menus(array(
            'primary'   => __('Primary Menu', 'myfirsttheme'),
            'secondary' => __('Secondary Menu', 'myfirsttheme'),
        ));

        add_theme_support('post-formats', array('aside', 'gallery', 'quote', 'image', 'video'));
    }
endif; // myfirsttheme_setup
add_action('after_setup_theme', 'myfirsttheme_setup');


发表评论

暂无评论,抢个沙发...

客服 工单