単一の投稿に独自のドメイン名を持たせる方法
-
16-10-2019 - |
質問
ここでどのソリューションがソリューションとして最適に機能するかはわかりませんが、私が探しているのは、ページの編集画面上のメタボックスを介してオプションのドメインを入力し、WordPressが使用するデフォルトページテンプレートからテンプレートを選択するだけの簡単な方法です。 。
新しいドメインのA Name Recordを手動で追加し、メインWebサイトが使用している同じIPを指すことにより、これを達成する簡単な方法がなければならないと思います。選択した特定のページテンプレートを使用しているときにIDを投稿します。
両方のドメインでページにアクセスできるようにしたいと思います。新しいドメインのみが定義されたテンプレートを利用します。
これはどうすればいいですか?
更新しましたもう1つの方法は、マルチサイトに使用されるいくつかのWordPressコードを使用して独自のサブドメインを使用できるように、最初に単一ページをセットアップすることだと思いますか?言い換えれば、カスタムサブドメインを特定の投稿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;
}
他のヒント
更新された回答
さて、サイトAで投稿を作成できるようにし、オプションではサイトBに投稿することができるように、書き込みパネルにオプションが必要なように聞こえます。 WordPressおよびXMLRPC.
ここは いくつかの例コード. 。この記事のコードをカスタムメタボックスと組み合わせることにより、目標を達成できるはずです。幸運を!
ここにもっと良いリソースがあります:
- http://codex.wordpress.org/xml-rpc_wp
- http://codex.wordpress.org/xml-rpc_support
- http://www.hurricanesoftwares.com/wordpress-xmlrpc-posting-content-from-wordpress-admin-panel/
- http://kovshenin.com/archives/custom-xml-rpc-methods-in-wordpress/
- phpmadesimple.info/2009/07/05/using-wordpress-xmlrpc-services/
- http://www.coderstd.com/products/xmlrpc-api-wp/index.html
- http://josephscott.org/archives/2008/11/adding-xml-rpc-methods-to-wordpress/
- FYI:WordPressのWindows Live WriterはXMLRPCソリューションを実装しますが、これにはサードパーティの環境で公開する必要があります。
- または、使用を検討することもできます webhooks.
NB投稿に作成する更新がシンジケートされていることを確認するために、投稿のPOST_IDをリモートサイトにカスタムフィールドに保存することもできます。また、おそらく、最初のリモートポストが送信される数分前の数分の遅延を実装する必要があります(ほとんど何でも公開した直後に変更を加えることは必然的に変更しますが、それは私だけかもしれません)。
元の答えは以下にあります
どちらか(i)mod_rewriteを使用して.htaccessを設定してpost urlをマスクします。 再教育後 次のファイルを追加します。
Post-Redirect-Meta.php - Postmetaテーブルに保存するテキスト入力ボックスを使用して、「Post Redirect URL」と呼ばれるメタボックスを作成します。
Post-Redirect.php - 条件付き(HTTPリファラーに基づく)「Post Redirect」と呼ばれるテーマテンプレートを作成します(Post Redirect URL」メタボックスに投稿編集ページに保存されたターゲットURLを使用して301リダイレクトを実行します。これにより、新しいドメインのフレームに元の投稿を表示できます。
あなたの指定された要件に基づいて、これらは最も単純な解決策のように見えますが、これがあなたの意図であることは明らかではありません(例えば、何がしますか」両方のドメインにページにアクセスできるようにしたい「つまり?両方ともWPを実行しているのですか?2つのサイト間のビジネス関係は何ですか?)これは、可能であれば、「なぜ」を説明してください。
これを達成するためのコードは複雑ではありませんが、トラブルを経験する前に、達成しようとしていることを明確にしてください。