【问题标题】:Calling a class function from functions.php shortcode从functions.php短代码调用类函数
【发布时间】:2019-12-27 17:25:44
【问题描述】:

我认为这毫无疑问会起作用,但我错过了一些东西。

在我的wordpress子functions.php中:

function HelloWorldShortcode() {
    return My_Custom_Plugin_Public::display_custom_block();
}
add_shortcode('helloworld', 'HelloWorldShortcode');

display_custom_block() 函数:

    public static function display_custom_block() {
echo "hello world hello world";
    }

不幸的是,该页面无法加载此短代码。我不能从简码中调用类函数吗?

全班:

<?php

defined( 'ABSPATH' ) or die();
class My_Custom_Plugin_Public {

    private $plugin_name;

    private $version;

    public function __construct( $plugin_name, $version ) {

        $this->plugin_name = $plugin_name;
        $this->version = $version;

    }

    public static function display_custom_block() {
echo "hello world hello world";
    }
}

【问题讨论】:

  • 你在哪里调用这个短代码?
  • 已添加到我的帖子中。短代码已添加到我的子主题 functions.php
  • 能否在functions.php中添加整个类代码以及如何导入
  • 添加在上面。 Functions.php 是主题的默认部分并且正在工作。即,如果我将简码更改为 function HelloWorldShortcode() { return '

    Hello World!

    '; } add_shortcode('helloworld', 'HelloWorldShortcode');它打印“Hello World!”

标签: wordpress oop shortcode


【解决方案1】:

首先将类文件导入functions.php,正如你所说的那样

require_once( __DIR__ . '/YourCustomClass.php'); //Path of file

然后在你的函数中你可以这样调用

function HelloWorldShortcode() {
    return My_Custom_Plugin_Public::display_custom_block();
} 
add_shortcode('helloworld', 'HelloWorldShortcode');

这应该可以工作

【讨论】:

  • 嗨,是的,我同意。该类是从我的主插件文件加载的。
  • 您是否遇到任何错误?您是否在 wp-config.php 中将 WP_DEBUG 启用为 true,以便您可以知道错误(如果有)
  • 好奇怪,感谢您的检查,我想我需要重新查看所有内容。我的完整插件在另一个站点上运行,但我调用 My_Custom_Plugin_Public::display_custom_block();直接在模板文件中。这次我想从简码中调用它,这就是我要改变的全部
  • 就像我说的尝试启用 WP_DEBUG 并且您可以尝试使用 var_dump 或 print_r 来调试并查看是否导入
  • 这对我们很多人来说都很常见。我很高兴你能解决它:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-08-07
  • 2013-05-26
  • 2012-10-21
  • 2015-01-16
  • 1970-01-01
  • 1970-01-01
  • 2018-03-08
相关资源
最近更新 更多