私は何百ものページを持つWordPressサイトのソフトウェアエンジニアです、そしてそれはとてもうまくいっています。
ただし、WordPressシステムからの/ interference(テーマなし、スタイルなし、JavaScriptなしなど)を使用してno対話を使用して自分のページをコーディングできるようにしたいというケースがいくつかあります。同じサブドメインにあります。
https://example.com/special-page
内のどこかにアップロードされたHTMLファイルを表示するように/wp-content/
を設定するにはどうすればよいですか?
そして、おまけとして、それがPHPファイル(これはHTMLを生成するでしょう)でも動作するのであれば私は大好きです。
手動で.htaccess
ファイルを編集せずにこれを行いたいのですが。
これが近付く例です:
LeadPages WordPressプラグイン は、私が望んでいるもののバリエーションをしているようです。ユーザーは "slug"(special-page
などの相対パス)とそこに表示するコンテンツを指定できます。しかし、明らかにこのプラグインを使用するには、コンテンツをLeadPages.netでホストする必要があります。
私がやりたいことは、私のサーバー上のどこかに(例えば/wp-content/
のような公にアクセス可能なフォルダーに)自分のHTMLファイルをホストし、それからそれへの特定の相対パスポイントを持つことです。
私が手動で編集した.htaccess
ファイルを見てください(そしてそれは私が望むように動作します):
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
Options +FollowSymLinks
DirectoryIndex /wp-content/raw/book-sale.html [L]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteRule ^thanks$ /wp-content/raw/book-opt-in-thank-you.html [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
私はWordPressの管理者から、サイトのルート(/
)に/wp-content/raw/book-sale.html
の内容を表示し、/thanks
に/wp-content/raw/book-opt-in-thank-you.html
を表示するように指定できれば良かったでしょう(.htaccess
ファイルを編集する必要はありません)。直接。
子テーマを作成してPHPファイルをそこに入れても構わないと思っている場合、このアプローチは比較的きれいです。ファイルごとに、使用するパスとロードするファイル名を指定した書き換え規則を作成します。以下の例では、/custom-path/
はあなたの子テーマディレクトリのルートからcustom-file.php
をロードし、/custom-path-2/
はcustom-file-2.php
をロードします。書き換えを追加した後にパーマリンクをフラッシュすることを忘れないでください。
/*
* Set up a rewrite for each path which should load a file.
*/
function my_standalone_rewrites() {
add_rewrite_rule( '^custom-path/?', 'index.php?standalone=custom-file', 'top' );
add_rewrite_rule( '^custom-path-2/?', 'index.php?standalone=custom-file-2', 'top' );
}
add_action( 'init', 'my_standalone_rewrites' );
/*
* Make `standalone` available as a query var.
*/
function my_query_vars( $vars ) {
$vars[] = 'standalone';
return $vars;
}
add_filter( 'query_vars', 'my_query_vars' );
/*
* If `standalone` is set when parsing the main query, load the standalone file.
*/
function my_standalone_path( &$wp_query ) {
if ( $wp_query->is_main_query() && get_query_var( 'standalone', false ) ) {
// Load filename.php from your child theme root.
get_template_part( get_query_var( 'standalone' ) );
exit;
}
}
add_action( 'parse_query', 'my_standalone_path' );
スラッグを付けてページを作成し、出力するHTMLパスを指定するカスタムフィールドを追加することができます(この例では、メタキーとしてhtmlfilepath
またはhtmlurl
を使用します)。
add_action('wp','maybe_direct_html_output');
function maybe_direct_html_output() {
if (is_singular()) {
global $post;
$htmlfilepath = get_post_meta($post->ID,'htmlfilepath',true);
if ( ($htmlfilepath) && (file_exists($htmlfilepath)) ) {
echo file_get_contents($htmlfilepath); exit;
}
$htmlurl = get_post_meta($post->ID,'htmlurl',true);
if ($htmlurl) {
$html = wp_remote_get($html);
if (!is_wp_error($html)) {echo $html['body']; exit;}
}
}
}
そのため、.htaccess
を使用する必要はありません。wp-content
を使用する必要があることに気付いたので、相対パスを使用し、これを(htmlfile
メタキーを使用)に単純化できます。
add_action('wp','maybe_direct_html_output');
function maybe_direct_html_output() {
if (is_singular()) {
global $post;
$htmlrelpath = get_post_meta($post->ID,'htmlfile',true);
if (!$htmlrelpath) {return;}
$htmlfilepath = WP_CONTENT_DIR.$htmlrelpath;
if (!file_exists($htmlfilepath)) {return;}
echo file_get_contents($htmlrelpath); exit;
}
}
WP_CONTENT_DIR
には末尾のスラッシュがないので、/raw/book-sale.html
のようにページの相対パスカスタムフィールド値を入力します。