質問: 単一の投稿に独自のドメイン名を持たせる方法 ここでどの解決策が最適なのかわからないが、探しているのはページ編集画面でメタボックスを介してオプションのドメインを入力し、wordpressが使用するデフォルトのページテンプレートからテンプレートを選択するだけの簡単な方法です。 。新しいドメインのa名前レコードを手動で追加し、それをメインwebサイトが使用しているのと同じipを指すようにして、コードを使用してこの新しいドメインへの要求を許可選択した特定のページテンプレートを利用しながらidを投稿します。ページが両方のドメインからアクセス可能であり、新しいドメインだけが定義済みテンプレートを利用することを望みます。どうすればこれができますか?updatedもう一つの方法は、マルチサイトで使われている組み込みのワードプレスコードを使って独自のサブドメインを持つことができるように、まず単一のページを設定することでしょうか。つまり、カスタムサブドメインを特定の投稿idに割り当てることができる場合、このサブドメインへのcnameレコードを新しいドメインに設定することができます。これを達成するための最善の方法はわかりません。
回答: このコードでカスタムのメタ値を設定することができ、ドメイン名(またはコードを編集した場合はサブドメイン)がそれと一致する場合、クエリはその投稿と一致するように変更されます。ページテンプレートはそのリクエストにのみ使用され、「通常の」urlを介したリクエストには使用されません。これは、そのページのリンクを変更しません。「通常の」サイトにアクセスするのか、それともサブドメインに留まるのか?dns側でこれをどのように解決するかは、おそらく サーバー障害の質問です 。define( 'wpse4558_standard_server', 'www.example.com' ); define( 'wpse4558_meta_key', 'domainname' ); add_filter( 'request', 'wpse4558_request' ); function wpse4558_request( $query_vars ) { $query_vars['is_subdomain_request'] = false; if ( wpse4558_standard_server != $_server['server_name'] ) { $query_vars['meta_key'] = wpse4558_meta_key; // this can also be just the subdomain, if you edit it $query_vars['meta_value'] = $_server['server_name']; $query_vars['is_subdomain_request'] = true; } return $query_vars; } add_action( 'parse_query', 'wpse4558_parse_query' ); function wpse4558_parse_query( &$wp_query ) { if ( $wp_query->get( 'is_subdomain_request' ) ) { $wp_query->is_home = false; $wp_query->is_page = true; $wp_query->is_singular = true; } } add_filter( 'page_template', 'wpse4558_page_template' ); function wpse4558_page_template( $template ) { global $wp_query; $id = $wp_query->get_queried_object_id(); if( ! $wp_query->get( 'is_subdomain_request' ) && get_post_meta( $id, wpse4558_meta_key ) ) { // this is a page that has a subdomain attached, but the current request is not via that subdomain // so use the normal template hierarchy, ignore the page template $templates = array(); $pagename = $wp_query->get_queried_object()->post_name; if ( $pagename ) { $templates[] = "page-$pagename.php"; } if ( $id ) { $templates[] = "page-$id.php"; } $templates[] = "page.php"; $template = locate_template( $templates ); } return $template; }