wake-up-neo.com

Fügen Sie programmgesteuert eine benutzerdefinierte Seite/Pfad/URL/Route zu WordPress hinzu

Konzeptionell ist das, was ich tun möchte, super einfach. In meinem Plugin möchte ich einen einzelnen Pfad/eine einzelne Route zu meiner WordPress-Site hinzufügen:

[mysiteurl]/testpath

... das eine bestimmte Datei lädt, wie:

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

Ich habe mit wp-rewrite, flush_rules, add_filter ('rewrite_rules_array', xxx) gespielt, aber alles, was ich bekam, war, dass die Site den Pfad akzeptiert, aber die Homepage anzeigt.

Klar, mir fehlt etwas ganz Einfaches, aber ich habe eine Weile gegoogelt, ohne zu finden, was ich brauche. Irgendwelche Ideen?

1
ChrisNY

Die Idee ist nur, programmgesteuert einen Pfad/eine URL in einem Plugin für eine WordPress-Site (wie "[mysite]/mypath") zu erstellen und dann eine beliebige HTML- oder PHP-Datei zu laden. Falls jemand anderes nach etwas Ähnlichem sucht, funktioniert dies für mich (in meiner Haupt-Plugin-Funktionsdatei):

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

Verweise:

2
ChrisNY