【发布时间】:2016-03-29 07:42:19
【问题描述】:
我正在创建一个基于 Sage WordPress 入门主题的主题,并创建了一个新的命名空间来存储我的一些函数 (Roots\Sage\Color_Scheme)。
当我尝试从该命名空间调用函数时,我收到错误消息
调用未定义的函数 Roots\Sage\Color_Scheme\custom_header_and_background() 在 C:\xampp\htdocs\wordpress\wp-content\themes\soaring\lib\setup.php on 第 19 行
由于我声明了“使用 Roots\Sage\Color_Scheme”并且该函数肯定在 color_scheme.php 文件中,我不确定为什么它实际上没有识别该函数。请注意,color_scheme.php 是一个命名空间的函数集合,但不包含已声明的类。
安装程序.php
namespace Roots\Sage\Setup;
use Roots\Sage\Assets;
use Roots\Sage\Color_Scheme;
/**
* Theme setup
*/
function setup() {
// Enable features from Soil when plugin is activated
// https://roots.io/plugins/soil/
add_theme_support('soil-clean-up');
add_theme_support('soil-nav-walker');
add_theme_support('soil-nice-search');
add_theme_support('soil-jquery-cdn');
add_theme_support('soil-relative-urls');
Color_Scheme\custom_header_and_background();
...
这里是 Color_Scheme.php 的相关部分(位于同一目录中)
<?php
namespace Roots\Sage\Color_Scheme;
/**
* Adds theme support for custom background and custom header
*
* Include default values for several settings.
*/
function custom_header_and_background() {
$color_scheme = get_color_scheme();
$default_background_color = trim( $color_scheme[0], '#' );
$default_text_color = trim( $color_scheme[1], '#' );
/**
* Filter the arguments used when adding 'custom-background' support in Soaring.
*
* @since Soaring 1.0
*
* @param array $args {
* An array of custom-background support arguments.
*
* @type string $default-color Default color of the background.
* }
*/
add_theme_support( 'custom-background', apply_filters( 'soaring_custom_background_args', array(
'default-color' => $default_background_color,
)));
// HEADER
$custom_header_args = array(
'width' => 300,
'height' => 120,
'flex-width' => true,
'flex-height' => true,
'default-image' => get_template_directory_uri() . '/images/soaring-logo.png',
);
add_theme_support( 'custom-header', $custom_header_args );
}
【问题讨论】:
-
您的 Setup.php 是否包含
include到 Color_Scheme.php? -
不,它没有。 color_scheme.php 在目录中,但我从未写过一行来包含它。即使命名空间和同一目录也有必要吗?
-
如果我执行“include 'color_scheme.php'”,它似乎确实可以工作并识别该功能。如果我想从另一个文件访问函数,这就是我需要做的吗?
-
如果您不想在
Setup.php文件中使用require_once。您还可以使用位于functions.php中的 Sage 的$sage_includes = [ ]数组包含您的color_scheme.php文件。
标签: php wordpress namespaces runtime-error