it-swarm.com.de

Wie erzwinge ich programmgesteuert benutzerdefinierte Permalinks für mein Design?

Ich mache ein benutzerdefiniertes Thema. Es ist ein hochspezialisiertes Thema, um WordPress wie eine Anwendung und nicht wie ein CMS-System oder ein Blog zu machen. Zum Beispiel ein Planungssystem für Zahnarztpraxen (mit CMS- und Widget-Funktionen).

Da für mein Design hübsche URLs erforderlich sind, muss die .htaccess-Datei der Standard sein, der nur erstellt wird, wenn jemand Permalinks auf Benutzerdefiniert setzt (und dann so etwas wie% postname% eingibt). Wie kann ich das in WordPress programmgesteuert auslösen, damit es das schafft? Ich meine, ich könnte die Datei wahrscheinlich während der Theme-Aktivierung selbst überschreiben, aber das Bessere wäre, die WordPress-API dafür zu verwenden.

2
Volomike

Um Permalinks vollständig zu aktivieren, müssen Sie auch sicherstellen, dass .htaccess ebenfalls erstellt wird. Dazu müssen Sie eine Option festlegen und die Regeln mit einem Booleschen Wert leeren.

global $wp_rewrite; 

//Write the rule
$wp_rewrite->set_permalink_structure('/%postname%/'); 

//Set the option
update_option( "rewrite_rules", FALSE ); 

//Flush the rules and tell it to write htaccess
$wp_rewrite->flush_rules( true );

Wenn Sie dies in einem Plugin verwenden, muss es sich im Hook init befinden, not the load hook. Wenn es sich im Hook load befindet, wird ein Fehler ausgegeben, der besagt, dass $wp_rewrite null ist.

Wichtig: Sie sollten auch eine Bedingung haben, damit dies nur einmal festgelegt wird. (Sie können eine Option erstellen und prüfen, ob sie festgelegt ist. Andernfalls führen Sie diesen Permalink-Code aus und legen diese Option fest.)

Ich überprüfe normalerweise auch, ob es sich um die Administratorseite handelt, und führe sie nur aus, wenn dies der Fall ist.

2
Don Rhummy
function change_permalinks() {
    global $wp_rewrite;
    $wp_rewrite->set_permalink_structure('/%postname%/');
    $wp_rewrite->flush_rules();
}
add_action('init', 'change_permalinks');

Möglicherweise benötigen Sie den Aktions-Hook nicht, wenn Sie diesen in den Funktionscode für die Themenaktivierung einfügen.

Ich fand auch, dass dies nur geringfügig funktionierte. Sie müssen noch auf die Seite mit den Permalinks-Einstellungen klicken, damit die .htaccess-Datei erstellt wird. Also, was ist zu tun? Nun, ich fand heraus, dass ich einen IFRAME verwenden könnte, der diese Seite automatisch aus dem Optionsfeld meines Themas lädt und dann diese .htaccess-Datei für mich erstellt.

<iframe style="position:absolute;top:-5000px" src="<?= site_url() ?>/wp-admin/options-permalink.php"></iframe>
4
Volomike