从模板调用自定义插件类方法

时间:2015-12-05 作者:Andrew

是否可以从类加载的模板文件中调用该类的实例方法?如果我试图调用$this 从模板中,我得到Fatal error: Using $this when not in object context 静态调用一切都会破坏类的用途。

换句话说,是否可以让下面的模板文件在WP_Widget 子类与我调用的方式相同the_title()?

CustomPluginTemplate。php

<?php get_header(); ?>
<main id="main" class="site-main" role="main">
    <div>
        <p><?php callSomeClassMethodHere() ?></p>
    </div>
</main>
<?php get_footer(); ?>
自定义插件。php
<?php

/*
Plugin Name: My Custom Plugin
Description: This is a test plugin
Version: 0.0.1
*/

class CustomPlugin extends \\WP_Widget {
    public function __construct() {
        parent::__construct(
            \'CustomPlugin\', // ID
            __(\'Custom Plugin\', \'text_domain\'), // Name
            array( \'description\' => __( \'This is a custom plugin\', \'text_domain\' )) // Description
        );

        add_action(\'init\', array($this, \'init\'), 10, 0);
        add_filter(\'query_vars\', array($this, \'query_vars\'));
        add_action(\'page_template\', array($this, \'page_template\'));
    }

    public function init() {
        add_rewrite_rule(
            \'^custom-page/([^/]*)\',
            \'index.php?page_id=2&custom_id=$matches[1]\',
            \'top\'
        );

    }

    public function query_vars($query_vars) {
        $query_vars[] = \'custom_id\';

        return $query_vars;
    }

    public function page_template($path = \'\') {
        $path = dirname(__FILE__) . \'/CustomPluginTemplate.php\';

        return $path;
    }
}

add_action(\'widgets_init\', function () { register_widget(\'CustomPlugin\'); });

1 个回复
最合适的回答,由SO网友:WPTC-Troop 整理而成

您可以从类实例化一个对象CustomPlugin 喜欢$obj = new CustomPlugin(\'id\',\'name\',\'desc\'); 在里面CustomPluginTemplate.php

并调用CustomPluginTemplate.php 文件为$obj->query_vars();

在实例化之前,请确保包含您的类。