URL Rewriting muss manuell für mein Plugin aktiviert werden

Ich erstelle ein WordPress-Plugin, das Seiten (mit get_header() , get_footer() und get_sidebar() ) zum Durchsuchen einer API erstellt.

Natürlich habe ich einige Regeln für URL-Umschreiben wie folgt definiert:

 function init() { global $wp_rewrite; add_rewrite_rule('my_plugin/(.+)/results?', 'index.php?my_plugin=results&data=$matches[1]', 'top'); ... $wp_rewrite->flush_rules(); } 

Diese function wird mit dieser Zeile im Konstruktor meines Plugins aufgerufen:

 add_action('init', array(&$this, 'init')); 

Das Plugin funktioniert einwandfrei, aber ich muss das URL-Rewriting manuell unter Einstellungen> Permalinks in meinem Admin-Dashboard aktivieren. Ich brauche nur eine Option auszuwählen: Tag und Name , Monat und Name , Numerisch , … (was auch immer).

Das Problem ist, dass wenn ich das Plugin auf einem neuen WordPress mit Permalinks deaktivieren ( Standard ), bekomme ich immer einen Fehler 404 . Dies funktioniert nur, wenn ich Permalinks manuell aktiviere.
(Ich weiß, dass dies von der .htaccess erledigt wird).

Gibt es eine Möglichkeit dies zu umgehen oder automatisch Permalinks durch mein Plugin zu aktivieren?
Andere gute Lösung ist willkommen.

Ich hoffe meine Frage ist klar.
Vielen Dank.

Solutions Collecting From Web of "URL Rewriting muss manuell für mein Plugin aktiviert werden"

Immer wenn ich ein Plugin erstelle, das Permalinks aktiviert, überprüfe ich die Aktivierung des Plugins und wenn es nicht gesetzt ist, zeige ich eine Nachricht für den Benutzer an:

 // Add Check if permalinks are set on plugin activation register_activation_hook( __FILE__, 'is_permalink_activate' ); function is_permalink_activate() { //add notice if user needs to enable permalinks if (! get_option('permalink_structure') ) add_action('admin_notices', 'permalink_structure_admin_notice'); } function permalink_structure_admin_notice(){ echo '

Please Make sure to enable Permalinks.

'; }

Ich habe den Code gefunden.

 modify_permalinks('/%postname%/','',''); function modify_permalinks($permalink_structure, $category_base, $tag_base){ global $wp_rewrite; require_once(ABSPATH . 'wp-admin/includes/file.php'); require_once(ABSPATH . 'wp-admin/includes/misc.php'); # get paths $home_path = get_home_path(); $iis7_permalinks = iis7_supports_permalinks(); # set the structure $permalink_structure = preg_replace('#/+#', '/', '/' . $permalink_structure); $wp_rewrite->set_permalink_structure($permalink_structure); $category_base = preg_replace('#/+#', '/', '/' . $category_base); $wp_rewrite->set_category_base($category_base); $tag_base = preg_replace('#/+#', '/', '/' . $tag_base); $wp_rewrite->set_tag_base($tag_base); # check if there is a file to rewrite if ( $iis7_permalinks ) { if ( ( ! file_exists($home_path . 'web.config') && win_is_writable($home_path) ) || win_is_writable($home_path . 'web.config') ) $writable = true; else $writable = false; } else { if ( ( ! file_exists($home_path . '.htaccess') && is_writable($home_path) ) || is_writable($home_path . '.htaccess') ) $writable = true; else $writable = false; } # flush the rules update_option('rewrite_rules', FALSE); $wp_rewrite->flush_rules($writable); }