如何让单个帖子有自己的域名
-
16-10-2019 - |
题
我不确定这里哪种解决方案最有效地作为解决方案,但是我正在寻找的只是一种简单的方法,可以通过页面编辑屏幕上的metabox输入可选域,然后只需从默认页面templates wordpress中选择一个模板。
我假设必须有一种简单的方法来完成此操作,通过手动添加新域名的名称记录,并将其指向主网站使用的同一IP,然后通过一些代码允许对该新域的请求加载特定的请求使用您选择的特定页面模板时发布ID。
我希望两个域都可以访问该页面,而新域将使用定义的模板。
如何才能做到这一点?
更新我想另一种方法是首先设置一个页面,以便通过使用用于多站点的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-from-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/
- 仅供参考:WordPress的Windows Live Writer实现XMLRPC解决方案,但这要求您在第三方环境中发布。
- 或者,您可能想考虑使用 webhooks.
NB为确保您对帖子的更新是联合组织的,您可能还需要将帖子的post_id存储在自定义字段中的远程站点上。您可能还应该在发送初始远程帖子之前实施几分钟的延迟(我知道我不可避免地会在发布几乎所有内容后立即进行更改,但这可能只是我)。
原始答案如下
(i)设置.htaccess带有mod_rewrite来掩盖帖子URL,(ii)使用wp_insert_post的RSS跨多个站点进行帖子,或(iii)在主题中创建一个文件夹,称为名为 后置 并添加以下文件:
redirect-meta.php - 创建一个名为“ Post Redirect URL”的元框,其中包含一个文本输入框,该框将保存到您的Postmeta表中。
redirect.php - 创建一个名为“ Post Redirect”的主题模板,该模板(基于HTTP推荐人)使用保存在“邮政编辑”页面上的“邮政重定向URL” META框中的目标URL执行301重定向。这将使您可以在新域上的框架中显示原始帖子。
根据您所陈述的要求,这些似乎是最简单的解决方案,但是很明显这是您的意图(例如,有什么作用”我希望两个域都可以访问该页面“意思是?两个网站都在运行WP吗?两个网站之间的业务关系是什么?)。如果您更清楚地解释了您要实现的最终结果以及您最重要的问题的清单,这将有所帮助。无论您的答案是什么如果可能的话,也请解释“为什么”。
实现这一目标的代码并不复杂,但是在遇到麻烦之前,请澄清您要完成的工作。