【问题标题】:Where to put my custom functions in Wordpress?将我的自定义函数放在 Wordpress 中的什么位置?
【发布时间】:2011-04-14 18:26:28
【问题描述】:

我正在拔头发。我创建了一些生成随机数的简单函数,这些函数是从我想在 wordpress 页面上使用的数据库中提取的。 (然后从主题文件中调用它们,例如 header.php 或 page.php。)

我尝试将函数放在主题中的functions.php 中(根据我已阅读的文档),但我不断收到“调用未定义函数”错误!我到底做错了什么?

例如,这是functions.php中的一个函数

function randomPollNumber() {
///this gets a random active poll number
    $sql12 = "SELECT id FROM poll WHERE removed = 0 AND active = 1 ORDER BY RAND() LIMIT 1";
    $result12 = mysql_query($sql12);
    $myrow12 = mysql_fetch_row($result12);
    $pollquestionid = $myrow12[0];
    return $pollquestionid;
}

我正在调用它,来自 header.php 文件

<?php echo randomPollNumber(); ?>

是的,我确实尝试过使用 if_function_exists,但它当然无法找到该函数,所以它当然不存在。请帮忙?

【问题讨论】:

    标签: php wordpress function


    【解决方案1】:

    很奇怪——一些调试技巧:

    1. 将 die('functions.php file loaded') 语句放在 functions.php 的开头(不在函数内部)。如果它没有死,你就知道文件没有被加载。
    2. 如果它死了,请检查您的拼写(从functions.php 复制并粘贴函数名称到您的echo [...])。令人惊讶的是,有多少次我确信我拼写正确,而事实上我没有。
    3. 如果它没有死,请检查您的文件是否确实称为functions.php,它是否确实位于您正在编码的主题的正确主题文件夹中。
    4. functions.php 文件可能有错误,因此没有被解析,因此 Wordpress 找不到该函数。检查您的日志是否有错误。加载函数文件而不是其他文件,并检查函数是否正常工作。您使用的是 PHP Unit 还是类似的东西?

    【讨论】:

    • 我以为你救了我 Blowski!但很可惜,没有。我试过1,它死了。做了第2步,他们匹配。 3. 是的。职能。 4.我只加载了function.php,唉,它在我的函数之前有错误。 (具有讽刺意味的是,“add_action('admin_head','kubrick_theme_page_head');”的函数不存在)所以,我把它拿出来......它运行得很好......很兴奋......试过......和同样的交易......功能不存在! GRRR。不过,我很欣赏这些提示,并将在未来牢记它们。哦,我不知道 PHP 单元是什么......
    • @NarfFlarf:我不知道默认情况下 Wordpress 的 error_reporting 设置是什么,但请尝试在 functions.php 文件的顶部运行 error_reporting(E_ALL | E_STRICT);。如果该文件中有什么不正常的地方,这应该告诉你什么/在哪里。
    • PHP 单元只是让您自己测试函数以查看它们是否正常工作。 @AgentConundrum 的观点也很好,尽管我会将它添加到根 index.php 文件并放入 ini_set('display_errors', '1');也在那里。如果在加载该文件之前发生错误,将其添加到 functions.php 文件将不会返回错误。只需确保在网站上线之前再次删除代码。还有一件事 - 尝试从 functions.php 中删除任何其他代码。只拥有你的功能,别无其他。
    • 求助。纳芬。 :( 我得到的错误报告的唯一错误是“严格标准:is_a(): 已弃用。”我试着只把我的函数和一个有趣的 ECHO 放在那里看看。它确实加载了回声。我就是这样一个损失......我告诉我的客户这将是一个简单的!一定会喜欢它,对吧?哈哈,也许我的模板本身正在......做某事......?
    • @NarFlarf 我知道这违背了最佳实践,但是您可以在相关模板中包含该函数,然后在您找出问题所在时将其重构为 functions.php 文件 - 至少您的客户会很高兴。在解析 header.php 之前,听起来仍然没有加载 functions.php 。在调用自定义函数之前,尝试在 header.php 文件中使用 include_once "./functions.php"。
    猜你喜欢
    • 2016-05-07
    • 1970-01-01
    • 2011-07-28
    • 2017-07-04
    • 1970-01-01
    • 2011-03-16
    • 2011-04-15
    • 2018-09-12
    • 1970-01-01
    相关资源
    最近更新 更多