2016-01-22 92 views
1

几乎每个向WordPress添加php页面的指南都涉及到在主题级别添加它。例如How to add a PHP page to WordPress?。我想通过插件向多个网站添加一个新的面向公众的页面。我不想将这添加到数十个主题中。如果我可以将它添加到插件级别,它将适用于所有网站。通过插件添加一个PHP页面到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(); 

这也适用,但有问题的IM是侧边栏。有些主题没有他们和其他人做。并非所有的侧边栏都是30%等我不知道如何在这里建立div结构,使其工作。有些主题是100%的页面宽度,但在其他固定宽度的主题上查看时,这看起来很难看。我已经能够想出一些妥协,但是id能够做到这一点。

总结我的主要问题是。有没有可能调用一个将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二十五个主题)显示此文章,然后显示数据库中的每个其他文章后。林不知道为什么它拉动所有这些帖子,但如果我能够阻止它看起来像这将是一个有效的解决方案。

+0

不确定要理解。你想从你的插件添加模板页面? – Nozifel

+0

不完全,但这是我想要的最终结果。我希望能够例如。从我的插件中的php脚本生成页面的内容,然后使用当前的主题page.php来呈现我的内容。这样,它将符合主题css –

回答

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")); 

。希望帮助ü内容。 告诉我,如果它不符合你的问题。

+0

我需要一个动态系统。我不知道主题路径或模板名称。所以我会使用默认的single.php页面。当我打电话要求“...../single.php”时,它只是加载主页。不知道如何覆盖$ post对象来做我想做的事情。 –

+0

'my_template.php'是插件中的模板页面,如果is_page()覆盖默认模板。如果你想拥有一个动力系统,那么删除if(is_page())并在所有情况下都适用。 – Nozifel

+0

ive为我的原始评论添加了编辑,以更好地解释我现在在哪里。我不知道如何清除默认的WordPress的变量之前设置我自己的。当我打电话给主题page.php时,它已经有一堆东西了 –

相关问题