0

我正在构建我的第一个 wordpress 插件,但似乎遇到了一些问题。

我需要该插件在激活后使用与网站其余部分相同的样式创建一个新页面;以及向链接添加可自定义的路径(/这是路径)。

我研究了如何做到这一点,并得到了一个空白的 .php 文件出现......使用以下代码:

//Template fallback
add_action("template_redirect", 'my_theme_redirect');

function my_theme_redirect() {
    global $wpdb;
    $plugindir = dirname( __FILE__ );

    //A Simple Page
    if ( $wp->query_vars[ "pagename" ] == 'event-photo-uploadr' ) {
        $templatefilename = 'custom-uplaodr-page.php';
        if ( file_exists( TEMPLATEPATH . '/' . $templatefilename )) {
            $return_template = TEMPLATEPATH . '/' . $templatefilename;
        } else {
            $return_template = $plugindir . '/themefiles/' . $templatefilename;
        }
        do_theme_redirect($return_template);
    }
}

function do_theme_redirect($url) {
    global $post, $wp_query;
    if (have_posts()) {
        include($url);
        die();
    } else {
        $wp_query->is_404 = true;
    }
}

我现在需要知道的是,如何将这个 .php 文件替换为我的插件文件夹中的文件?我也想知道如何为这个页面创建一个自定义链接,因为它需要是一个隐藏页面,只有那些有链接的人才能看到。

必须全部通过插件运行,并且在插件停用时被删除。

我还想听听有关我的代码的最佳实践和改进的任何提示。谢谢!

4

1 回答 1

0

使用 add_action

add_action('template_redirect', '函数名');

然后创建一个函数来加载和使用 require 这将覆盖您当前的主题。然后,您需要在函数中添加过滤器。

add_action('template_redirect', 'loadTheme');

function laodTheme() {
if (is_page('page')){
global $post, $wp_query;
    if (have_posts()) {
        require($url);
        die();
    } else {
        $wp_query->is_404 = true;
    }
}  
}

这样在转到“页面”页面时应该重定向您的主题,您可以根据需要更改您的条件。我想这就是你要问的。

至于自定义链接,这些可以在您的自定义主题文件中设置。

于 2014-03-27T14:47:01.910 回答