根据用户变量在URL中显示自定义插件

时间:2018-09-11 作者:armadadrive

如果有人问我这个问题,我很抱歉——我还不知道如何以一种可以引导我去哪里的方式来搜索它。

我们有一个客户,他希望构建一个代表四个地理区域的站点,因此裸域之后的第一个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结构中?

1 个回复
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;


        }

    }

}

结束