以编程方式向WordPress添加自定义页面/路径/url/route

时间:2014-10-03 作者:ChrisNY

从概念上讲,我想做的事情非常简单。在我的插件中,我想向我的wordpress站点添加一个路径/路由:

[mysiteurl]/testpath
。。。加载特定文件,如:

[filepath-to-my-plugin]/testfile.html
我玩过wp rewrite、flush\\u rules、add\\u filter(\'rewrite\\u rules\\u array\',xxx),但我得到的只是让站点接受路径,但显示主页。

很明显,我错过了一些非常简单的东西,但我已经在google上搜索了一段时间,没有找到我需要的东西。有什么想法吗?

1 个回复
SO网友:ChrisNY

这个想法就是通过编程在WordPress站点的插件中创建路径/url(比如,“[我的网站]/我的路径”),然后加载任意html或php文件。如果其他人也在寻找类似的东西,这对我很有用(在我的主插件函数文件中):

register_activation_hook(__FILE__, \'myplugin_activate\'); 
function myplugin_activate () {
  create_custom_page(\'mytestpath\');
}

function create_custom_page($page_name) {
  $pageExists = false;
  $pages = get_pages();     
  foreach ($pages as $page) { 
    if ($page->post_name == $page_name) {
      $pageExists = true;
      break;
    }
  }
  if (!$pageExists) {
    wp_insert_post ([
        \'post_type\' =>\'page\',        
        \'post_name\' => $page_name,
        \'post_status\' => \'publish\',
    ]);
  }
}
// End Plugin Activation


//Start Catching URL
add_filter( \'page_template\', \'catch_mypath\' );
function catch_mypath( $page_template ) {
    if ( is_page( \'mytestpath\' ) ) {
        $page_template = __DIR__.\'/mypage.html\';
    }
    return $page_template;
}
参考文献:This answer about creating custom pages in a plugin. 谢谢fuxia.

结束

相关推荐

Add sidebar in inner pages

我是wordpress编码新手。我想在主页以外的页面上添加一个侧边栏,这两个页面都是我的自定义模板。我想在管理员列表,以便管理员可以编辑侧边栏的内容。此外,我是否需要创建小部件来显示每个边栏?