通过插件将Word页面添加到Wordpress

时间:2016-01-22 08:47:59

标签: php css wordpress

几乎每个我为了向Wordpress添加php页面而遇到的指南都涉及在主题级别添加它。例如How to add a PHP page to WordPress?。我想通过插件向多个站点添加一个新的面向公众的页面。我不想将其添加到几十个主题中。如果我可以在插件级别添加它,它将适用于所有网站。

我有这个工作,但我需要一些方法将其注入主题。为了获得侧边栏和内容而无需为每个主题添加自定义css。

我开始添加重写规则

RewriteRule ^mypage /wp-content/plugins/myplugin/mypage.php [QSA,L]

然后page.php包含

require_once('../../../wp-blog-header.php');
get_header();

//custom php content
//get_sidebar(); // how to get this working.
get_footer();

这也有效,但我遇到的问题是侧边栏。有些主题没有它们,有些则没有。并非所有的侧边栏都是30%等。我不知道如何在这里构建div结构以使其工作。一些主题是100%的页面宽度,但是当在其他固定宽度的主题上查看时,这看起来很丑陋。我已经能够做出一些妥协,但我能够做到这一点。

总之,我的主要问题是。是否可以调用将html注入主题页面的方法。例如generate_page($ HTML);.然后,此方法将转到主题的page.php,并将$ html注入主题的内容区域。

编辑 为了动态地将内容注入未知主题,我做了以下

global $post;

$post->post_content = "TEST PAGE content";
$post->post_title = "Page Title";
$post->post_name = "test-page";

include get_template_directory()."/page.php";

这适用于某些主题,而不适用于其他主题。一些主题将显示这篇文章很好,但其他(默认的wordpres二十五主题)正在显示此帖子,然后在数据库之后的所有其他帖子。我不知道它在哪里或为什么拉动所有这些帖子,但如果我能让它停止它看起来这将是一个有效的解决方案。

1 个答案:

答案 0 :(得分:0)

然后你可以尝试在特定情况下加载特定的模板页面。

function load_my_template( $template )
{
    if( is_page() )
        $template = plugin_dir_path(__FILE__) . "dir_to/my_template.php";

    return $template;
}

或更改加载页面上使用的内容

function load_my_content( $content )
{
    global $post;

    $id = $post->ID;

    if( is_page() )
    {
        ob_start();

        include plugin_dir_path(__FILE__) . "dir_to/my_template.php";

        $content = ob_get_clean();
    }

    return $content;
}

在你的__construct()

add_filter('template_include', array($this,'load_my_template') );
add_filter("the_content", array($this,"load_my_content" ) );
add_filter("get_the_content", array($this,"load_my_content" ) );
希望对你有所帮助。 告诉我它是否与您的问题不符。