TEMPLATE_INCLUDE过滤器不呈现自定义模板

时间:2013-09-02 作者:user37449

我创建了一个插件,该插件将呈现输入页面的短代码。

这个短代码将覆盖主题的页面模板,并使用我在插件中包含的模板

这是我的代码:

api。php

   class Api{

    public static $logger = null;

    function Api() {
        add_shortcode(\'my_shortcode\', array(&$this, \'my_shortcode_function\'));
    }

    function my_shortcode_function($atts,$content = null)   
    {
        add_filter( \'template_include\', \'custom_view\');         
    }

    function custom_view()
    {
        $template = plugin_dir_path( __FILE__ ) . \'custom-page.php\';

        return $template;

    }
}

    add_action(\'init\', \'apiInit\', 10);
    function apiInit() {

    global $api; 

  if (class_exists(\'Api\')){
    $api = new Api();
  }
    }
这是我的自定义页面。php(我百分之百确定它位于我在代码中指向的正确路径/目录中)

   <?php
   /**
    * Response View Template
    * File: custom-page.php
    *
    */
   echo \'I am here!\';
  <?
尝试调试每个函数,它通过my\\u shortcode\\u function()执行,但不通过自定义视图函数执行。

干杯

1 个回复
SO网友:kaiser

这个template_include 过滤器运行得更早,用于加载主请求模板。

您的内容将从内部调用the_content(), $GLOBALS[\'post\']->post_content 或者你用来展示它的任何东西。关键是,您不能使用过滤器,因为它不会触发。试着简单地使用require/include.

结束

相关推荐