Joomla教程菜鸟教程多个域名

这里有两种不同的解决方案 (编辑您的用例的细节):

做一个重定向:

1.) 在你的顶部 /wp-config.php 文件添加以下内容:

if ( is_yoursite_blogger_domain( $_SERVER['SERVER_NAME'] ) ) { $domain = str_replace( 'www.', '', $_SERVER['SERVER_NAME'] ); define( 'WP_SITEURL', 'http://' . $domain ); define( 'WP_HOME', 'http://' . $domain ); } else if ( ! is_main_domain( $_SERVER['SERVER_NAME'] ) ) { header( "Location:http://{$yoursite_main_domain}", true, 301 ); exit; } function is_main_domain( $domain ) { $domain = str_replace( 'www.', '', $_SERVER['SERVER_NAME'] ); return strpos( $domain, 'maindomain.com' ) !== false; } function is_yoursite_blogger_domain( $domain ) { $domain = str_replace( 'www.', '', $_SERVER['SERVER_NAME'] ); return in_array( $domain, array( 'blogger1.com', 'blogger2.com', 'blogger3.com', 'blogger4.com', 'blogger5.com', 'uncategorized.dev', // Only here for use on my own test site ) ); } 

2.) 然后将其添加到您的主题中 functions.php 文件:

add_action( 'template_redirect', 'yoursite_template_redirect' ); function yoursite_template_redirect() { $path = $_SERVER['REQUEST_URI']; if (strpos($path,"/category/") === false) { $domain = str_replace( 'www.', '', $_SERVER['SERVER_NAME'] ) ; $category = str_replace( '.com', '', $domain ); $category = str_replace( '.dev', '', $domain ); // Only for my own test site $location = "http://{$domain}/category/{$category}/" ; wp_safe_redirect( $location ); exit; } } } 

以上将做一个 302 重定向到 http://blogger1.com/category/blogger1/ 当对任何 URL 发出请求时 http://blogger1.com 除了以 http://blogger1.com/category/ (您需要进行一些更改以支持其他 URL。)

做一个 “改写”:

以上不支持的是 “改写” 对一个 “重定向” 解决方案。 如果你想要它有点复杂。 以下代码将导致类别页面加载到映射到您的任何域的根路径中 is_yoursite_blogger_domain() 功能。 当然你的 is_yoursite_blogger_domain() 函数可以根据现有类别进行验证,但我不知道完整的标准,所以我只是对其进行了硬编码。 您可以将此代码复制到您的函数中 theme.php 文件或放入 .php 您可能正在编写的插件文件。 请注意,此代码还需要 /wp-config.php 上面的文件:

add_action( 'category_link', 'yoursite_category_link', 11, 2 ); function yoursite_category_link( $category_link, $category_id ) { // Make sure any blogger category links are truncated to the root $parts = explode( "https://wordpress.stackexchange.com/", $category_link ); if ( is_yoursite_blogger_domain( $parts[2] ) ) { // if %category% in http://%domain%/category/%category%/ // equals %domain% minus the 'com' extension if ( "{$parts[4]}." == substr( $parts[2], 0, strlen( $parts[4] ) + 1 ) ) { $category_link = "http://{$parts[2]}/"; // Strip 'category/%category%/' } } return $category_link; } add_action( 'init', 'yoursite_init' ); function yoursite_init() { // Remove the canonical redirect to the category page // if %category% in http://%category%.%ext%/ is a blogger category. if ( is_yoursite_blogger_domain( $_SERVER['SERVER_NAME'] ) ) { $parts = explode( "https://wordpress.stackexchange.com/", strtolower( $_SERVER['REQUEST_URI'] ) ); if (count($parts) > 1) { $category_base = get_option( 'category_base' ); if ( empty( $category_base ) ) $category_base="category"; if ( $category_base == $parts[1] ) { remove_filter( 'template_redirect', 'redirect_canonical' ); } } } } add_action( 'template_redirect', 'yoursite_template_redirect' ); function yoursite_template_redirect() { // Redirect any http://%category%.%ext%/category/%category%/ to http://%category%.%ext%/ if ( is_yoursite_blogger_domain( $_SERVER['SERVER_NAME'] ) ) { $category_base = get_option('category_base'); if (empty($category_base)) $category_base="category"; $parts = explode( "https://wordpress.stackexchange.com/", strtolower( $_SERVER['REQUEST_URI'] ) ); if ( $category_base == $parts[1] && "{$parts[2]}." == substr( $_SERVER['SERVER_NAME'], 0, strlen( $parts[2] ) + 1 ) ) { wp_safe_redirect( "http://{$_SERVER['SERVER_NAME']}/", 301 ); exit; } } } add_action( 'request', 'yoursite_request' ); function yoursite_request($query_vars) { // If %category% in http://%category%.%ext%/ is a blogger category set the // 'category_name' query var to tell WordPress to display the category page. $domain = $_SERVER['SERVER_NAME']; if ( is_yoursite_blogger_domain( $domain ) ) { $path = $_SERVER['REQUEST_URI']; if ( strpos( $path, "/category/" ) === false ) { $domain = str_replace( 'www.', '', $domain ) ; $category_name = substr( $domain, 0, strrpos( $domain, '.' ) ); $query_vars = array( 'category_name' => $category_name ); } } return $query_vars; } 

这是显示第二个示例的屏幕截图:

WordPress 网站的屏幕截图,该网站使用挂钩使类别页面显示在所选类别的 URL 根目录中
(来源:mikeschinkel.com)

另一种可能更好的方法是使用自定义分类法而不是类别,或者更好的是,将域映射到用户名。 这样一来,作者的工作量就会减少,您不必担心在代码中或在单独的分类列表中维护博主列表。

高质量外链购买

至于你 “奖金”,对不起,但我没有按照你想要的去做。

原文链接:https://www.wordpresshy.com/325074

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享