如果有人问我这个问题,我很抱歉——我还不知道如何以一种可以引导我去哪里的方式来搜索它。
我们有一个客户,他希望构建一个代表四个地理区域的站点,因此裸域之后的第一个URL部分应该这样表示:示例。com/州代码/
Let\'s say:
成员A注册并将FL指示为其本国(使用自定义字段选择下拉列表)。
成员B注册并指明AZ为其所在州。
因此,该站点看起来像:http://www.example.com/fl/ 至用户A,以及http://www.example.com/az/ 给用户B。
我们希望为站点使用相同的核心、相同的模板文件、相同的数据库等。我们只希望能够根据位置对这些模板进行一些基本的有条件更改,因为地理相关站点对最终用户很重要,但所有其他功能都不需要复制,因为这是多余的。E、 g。
/* header.php */
if ($user->location === \'fl\') {
echo \'<img src="logo-florida.png" />\';
} else if ($user->location === \'az\') {
echo \'<img src="logo-arizona.png" />\';
}
// etc.
这是否应该通过为我们的用户分配一个类别或标记(因此在Permalink中类似于%Category%)并将其与自定义字段条目匹配来实现?或者,是否有一种方法可以根据用户自定义状态字段中的变量内容,动态地将状态前置到URL?
我们如何轻松、干净地将自定义值添加到URL/permalink结构中?
SO网友:Hady Shaltout
如果我能很好地理解你,我想你需要找到一个字符串{fl or az} 这可以通过将当前URL分解为多个部分来完成。
如果您对代码感到困惑,我们会分配和检查如下变量{$url_path 和$url_parts} 内部if语句
/*
* NOTES:
*
* get_site_url() function return the
* current site url without trailing slash
* like { **http://www.example.com/fl** }
*
* FUN: parse_url: with const {PHP_URL_PATH} return the URL path after {.com}
*
* FUN: explode: separate words by delimiter \'/\' and {@} to avoid errors
*
* because of parse_url return the path after {.com} so the string
* {$url_path} starts with {/fl} so you we used the key number {1} not {0}
*
*/
$site_url = get_site_url();
if( ! empty( $url_path = parse_url( $site_url, PHP_URL_PATH ) ) ) {
if( is_array( $url_parts = @explode( \'/\', $url_path ) ) &&
( count( $url_parts ) > 0 ) &&
array_key_exists( 1, $url_parts ) ) {
switch( $url_parts[1] ) {
case \'fl\': {
/* === DO === */
} break;
case \'az\': {
/* === DO === */
} break;
}
}
}