私はカスタムテーマを作っています。 WordPressをCMSシステムやブログではなくアプリケーションのようにすることは、非常に専門的なテーマです。例えば、歯科用オフィススケジューリングシステム(CMSとウィジェット機能付き)などです。
私のテーマはきちんとはたらくためにかなりURLを必要とするので、私が本当に必要とするものは誰かがPermalinksをCustomに設定したときにだけ作成されるそのデフォルトであることです。どのようにしてWordPressでプログラム的に起動し、これを作成するのですか?つまり、テーマのアクティブ化中に自分でファイルを上書きする可能性がありますが、それよりも良いのはWordPress APIを使用することです。
パーマリンクを完全に有効にするには、.htaccessも作成されていることを確認する必要があります。それには、オプションを設定してルールをブール値でフラッシュする必要があります。
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 );
これをプラグインで使用する場合は、init
フック、notload
フックに含める必要があります。それがload
フックにある場合、$wp_rewrite
がnullであるというエラーを投げます。
重要: あなたはまたこれが一度だけ設定されるように条件を持つべきです。 (あなたはオプションを作成し、それが設定されているかどうかを確認することができます、そうでなければ、あなたはこのパーマリンクコードを実行し、そのオプションを設定します)
私はまた、それが管理者側であるかどうかを通常チェックし、そうである場合にのみ実行します。
function change_permalinks() {
global $wp_rewrite;
$wp_rewrite->set_permalink_structure('/%postname%/');
$wp_rewrite->flush_rules();
}
add_action('init', 'change_permalinks');
テーマ起動機能コードでこれを守っているのであれば、アクションフックは必要ないかもしれません。
私はこれがほんのわずかしか効かないこともわかりました。作成するその.htaccessファイルのために、まだパーマリンク設定ページをクリックしなければなりません。じゃあ何をすればいいの?私のテーマのオプションパネルからそのページを自動的にロードするIFRAMEを使用すると、その.htaccessファイルが作成されます。
<iframe style="position:absolute;top:-5000px" src="<?= site_url() ?>/wp-admin/options-permalink.php"></iframe>