web-dev-qa-db-ja.com

プログラムでWordPressにカスタムページ/ path/url/routeを追加する

概念的に私がやりたいことは超簡単です。私のプラグインでは、私は私のワードプレスサイトへの単一のパス/ルートを追加したいです。

[mysiteurl]/testpath

...これは特定のファイルをロードします。

[filepath-to-my-plugin]/testfile.html

Wp-rewrite、flush_rules、add_filter( 'rewrite_rules_array'、xxx)で遊んだことがありますが、サイトがパスを受け入れてホームページを表示することしかできませんでした。

明らかに単純なものが足りないのですが、必要なものが見つからないまましばらくグーグルしました。何か案は?

1
ChrisNY

その考えは、WordPressサイトのプラグインにプログラムでpath/url( "[mysite]/mypath"など)を作成してから、任意の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;
}

参考文献:

2
ChrisNY