是否可以从类加载的模板文件中调用该类的实例方法?如果我试图调用$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\'); });
最合适的回答,由SO网友:WPTC-Troop 整理而成
您可以从类实例化一个对象CustomPlugin
喜欢$obj = new CustomPlugin(\'id\',\'name\',\'desc\');
在里面CustomPluginTemplate.php
并调用CustomPluginTemplate.php
文件为$obj->query_vars();
在实例化之前,请确保包含您的类。