在插件上创建自定义页面和输出

时间:2018-05-10 作者:Foogle

我已经在google上搜索了几个小时这个问题,所以我试图通过创建自己的问题来获得一些帮助,希望你能帮助我:)

我写了一个插件,需要在空白页面上输出其内容。

我可以使用快捷方式,但模板页眉和页脚将加载到。我不想创建(空白)自定义模板文件。这需要用户做更多的工作,然后只安装插件。

所以我在stackexchange上找到了这段代码,它创建了一个永久链接并将内容输出到它:(直接链接:Generate custom output for page/URL in a plugin)

<?php
/*
Plugin Name: Custom output
Description: A module to test the custom output. To test: http://your_wordpress_site.com/customop_uri_path
Version: 1.0
Author: Danilo Silva
Author URI: http://danilocgsilva.me
*/

// Write a new permalink entry on code activation
register_activation_hook( __FILE__, \'customop_activation\' );
function customop_activation() {
        customop_custom_output();
        flush_rewrite_rules(); // Update the permalink entries in the database, so the permalink structure needn\'t be redone every page load
}

// If the plugin is deactivated, clean the permalink structure
register_deactivation_hook( __FILE__, \'customop_deactivation\' );
function customop_deactivation() {
        flush_rewrite_rules();
}


// And now, the code that do the magic!!!
// This code create a new permalink entry
add_action( \'init\', \'customop_custom_output\' );
function customop_custom_output() {
        add_rewrite_tag( \'%customop_uri_path%\', \'([^/]+)\' );
        add_permastruct( \'customop_uri_path\', \'/%customop_uri_path%\' );
}

// The following controls the output content
add_action( \'template_redirect\', \'customop_display\' );
function customop_display() {
        if ($query_var = get_query_var(\'customop_uri_path\')) {
                header("Content-Type: text/plain");
                echo \'This is my custom content!!!!\';
                exit; // Don\'t forget the exit. If so, WordPress will continue executing the template rendering and will not fing anything, throwing the \'not found page\' 
        }
}
这个示例运行得很好,除了它不仅将内容输出到“customop\\u uri\\u path”,它还在除主页之外的所有页面上创建输出。所以整个网站都搞砸了。

我创建了一个新的帮助线程,以便了解如何为我的插件创建这样的输出。

我可以只为插件加载一个特定的模板文件,这样短代码也会生成一个空白页面吗?或者代码示例中是否有错误?

我很感激你能为我提供的一切帮助。

1 个回复
SO网友:Filcp

您可以使用“page\\u template”过滤器为给定页面加载自定义模板。无论何时调用“页面”模板,它都将替换使用的模板。

记住将模板文件添加到插件文件夹的某个位置。

add_filter( \'page_template\', \'custom_template_function\' );
function custom_template_function( $page_template )
{
    if ( is_page( \'my-custom-page-slug\' ) ) {
        $page_template = dirname( __FILE__ ) . \'/custom-template.php\';
    }
    return $page_template;
}

结束

相关推荐

正在将wp-Content文件夹移动到public_html

我想移动我的wp-content 文件夹最多public_html. 我把这个放进去了wp-config.php (在“仅此而已,停止编辑!”行):define( \'WP_CONTENT_DIR\', dirname(__FILE__) . \'/public_html/wp-content\' ); define( \'WP_CONTENT_URL\', \'http://bhaktivedantaacademy.com/wp-content\' ); 我的站点位于子文件夹