是否有条件地将文件包含在函数.php中?

时间:2014-05-05 作者:Alexis Bellido

我在Wordpress网站上添加了一系列功能,包括功能中的文件。php,但我担心性能。所有这些文件都包含在每个页面请求中,并非所有页面都需要所有额外的功能。

Drupal的菜单系统允许您只包含特定URL的文件,这应该可以减少开销。Wordpress有没有类似的方法,或者我不应该为此烦恼?

谢谢

更新以澄清:我的意思是在新类或函数中包含具有额外功能的PHP文件。我说的不是CSS、Javascript或模板,它们当然有自己的包含方式。

2 个回复
SO网友:tfrommen

使用WordPress\'conditional tags, 全局变量、定义、类检查等。例如:

<?php
// load helper functions - always
require_once get_stylesheet_directory() . \'/inc/helper-functions.php\';

// load admin functions - for back-end only
if ( is_admin() )
    require_once get_stylesheet_directory() . \'/inc/admin-functions.php\';

// load WooCommerce functions - when WooCommerce is active
if ( in_array(
    \'woocommerce/woocommerce.php\',
    apply_filters( \'active_plugins\', get_option( \'active_plugins\' ) ) )
)
    require_once get_stylesheet_directory() . \'/inc/woocommerce-functions.php\';

// load SomeClass\' functions - when class SomeClass is known
if ( class_exists( \'SomeClass\' ) )
    require_once get_stylesheet_directory() . \'/inc/someclass-functions.php\';

// load debug functions - when debugging
if ( defined( \'WP_DEBUG\' ) && WP_DEBUG )
    require_once get_stylesheet_directory() . \'/inc/debug-functions.php\';
您还可以在满足某些功能内的某些条件时退出:

add_action( \'wp_enqueue_scripts\', \'wpdev_143439_enqueue_scripts\' );

function wpdev_143439_enqueue_scripts() {

    if (
        ! is_single()
        || is_singular( \'my_cpt\' )
        || (
            defined( \'NEVERSCRIPT\' )
            && NEVERSCRIPT
        )
    ) {
        return;
    }

    // Enqueue some scripts here
}

SO网友:Pieter Goosen

只在需要的页面上加载函数/样式/脚本等总是更好、更可取的。我从未亲自与Drupal合作过,因此我不会对其内部工作进行评论,但对于Wordpress,有一些条件标记只按照名称的状态执行,检查是否满足某个条件,如果满足,则执行所需的“操作”。如果不满足条件,即返回false,则不执行“操作”。

不必要地加载函数/样式/脚本等确实会影响性能,因此您应该计划何时加载什么,然后必须有条件地加载所有页面上不必要的任何内容。

关于条件标记的使用,不可能涵盖所有方面,因此我建议您去做一些研究,创建一个本地测试站点,并使用条件标记。这里有一些关于这个主题的好读物

法典-Conditional tags

  • PHP for WordPress: Mastering Conditional Statements and Tags by http://code.tutsplus.com/

    conditional tags wordpress

  • 结束