web-dev-qa-db-fra.com

Ajouter par programme une page/chemin/url/route personnalisé à WordPress

Conceptuellement, ce que je veux faire est super simple. Dans mon plugin, je veux ajouter un seul chemin/route à mon site wordpress:

[mysiteurl]/testpath

... qui charge un fichier particulier, comme:

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

J'ai joué avec wp-rewrite, flush_rules, add_filter ('rewrite_rules_array', xxx), mais tout ce que j'ai obtenu était que le site accepte le chemin mais affiche la page d'accueil.

Clairement, il me manque quelque chose de très simple, mais j'ai googlé pendant un moment sans trouver ce dont j'avais besoin. Des idées?

1
ChrisNY

L'idée est juste de créer par programme un chemin/url dans un plugin pour un site WordPress (comme "[mysite]/mypath"), puis de charger un fichier HTML ou php arbitraire. Si quelqu'un d'autre cherche quelque chose de similaire, cela fonctionne pour moi (dans mon fichier de fonction principal du plugin):

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;
}

Références:

2
ChrisNY