【问题标题】:Custom function error to produce a shortcode resulted in white screen of death生成简码的自定义函数错误导致白屏死机
【发布时间】:2019-08-24 01:29:18
【问题描述】:

我尽我所能地按照语法在执行时创建了一个短代码,我得到了 wsod。一旦删除,一切都很好。但我不知道我的代码有什么问题。此代码位于 wp 插件“我的自定义函数”中。

在研究如何编写自定义简码时,我在这里找到了说明:https://torquemag.io/2017/06/custom-shortcode/ 我的专长是 mysql,主要使用我们 wordpress 网站上的插件。我的编码非常有限。

function last_updated_shortcode {
   $last_updated = $wpdb->get_results( "SELECT MAX(process_time) FROM 
qgotv.last_updated");
    return $last_updated;
}
add_shortcode( 'last_updated', 'last_updated_shortcode' );

此短代码应从 db 表中检索一个最大值(日期时间值),以便将其显示在页面上。查询有效。 qgotv db 与 wordpress db 是分开的,但可以通过 wp 访问。

【问题讨论】:

    标签: wordpress shortcode custom-function


    【解决方案1】:

    我可以看到两个问题,一个是您的函数中有语法错误。在 PHP 中定义函数时,需要包含参数括号:function my_function(){ /* Do Stuff */ }。此外,您可能需要使用 global 关键字引用 $wpdb

    您可以阅读一下$wpdb classcreating your own functions

    这应该让你解决问题:

    add_shortcode( 'last_updated', 'last_updated_shortcode' );
    function last_updated_shortcode(){
        global $wpdb;
    
        $last_updated = $wpdb->get_results( "SELECT MAX(process_time) FROM qgotv.last_updated");
        return $last_updated;
    }
    

    【讨论】:

    • 解决了 WSOD。非常感谢你!但我没有得到预期的结果。当我在 SQL 窗口中运行查询时,它返回一个日期时间“2019-08-25 07:43:04”,但是当我在列为 [last_updated] 的 wp 页面上运行该函数时,我得到结果:Array.
    • $wpdb->get_results() 将返回一个数组。如果它只是一个结果,您可以在返回之前使用array_shift()return array_shift( $last_updated );
    • 恐怕这让wsod回来了。我用您在评论中的新“返回数组”行替换了整个“返回”行。分号和结尾一样 }
    猜你喜欢
    • 2012-08-25
    • 1970-01-01
    • 1970-01-01
    • 2014-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-16
    • 2011-02-24
    相关资源
    最近更新 更多