如何在多站点名称中允许大小写混合字符?

时间:2018-08-30 作者:Drewdavid

这条规则看起来很奇怪,因为你可以在WP管理区内随意命名你的网站。我正在为multisite创建一个用户注册表单,并认为这在我的表单中是一种糟糕的用户体验。

如何删除此“过滤器”并允许混合案例站点名称?

到目前为止,我已经找到了一个插件Tukod Multisite Site Names, 然而,它已经六年没有更新了,我很谨慎地尝试它。而且,我觉得为如此特定的东西安装一个大插件可能是不必要的。。。

1 个回复
SO网友:seot

总的来说,这是一个大问题

我们有一个

add_filter("wpmu_validate_blog_signup", "my_validate");
从这里开始,你必须绕过这个错误。由于一些版权问题,我无法向您展示我的确切代码,但至少是其中的一部分。在本例中,我们在允许的字符中添加连字符。我还通过google和stack overflow解决了这个问题

function my_validate($result)
{
$errors = $result[\'errors\'];


// we only want to filter if there is an error

if (!is_object($errors))
{
    return $result;
}

// create a new var to hold errors

$newerrors = new WP_Error();


// loop through the errors and look for the one we are concerned with

foreach($errors->errors as $key => $value)
{

    // if the error is with the blog name, check to see which one

    if ($key == \'blogname\')
    {
        foreach($value as $subkey => $subvalue)
        {
            switch ($subvalue)
            {
            case \'Site names can only contain lowercase letters (a-z) and numbers.\':
                $allowedchars = \'-\';

                // so whatever you do, you can add something to the allowedchars and bypass the preg match.
// by the way , the exact error case you need to get from the language file
                $allowed = \'/[a-z0-9\' . $allowedchars . \']+/\';
                preg_match($allowed, $result[\'blogname\'], $maybe);
                if ($result[\'blogname\'] != $maybe[0])
                {

                    // still fails, so add an error to the object

                    $newerrors->add(\'blogname\', __("Only lowercase letters and numbers allowed"));
                }

                continue;

结束

相关推荐

WordPress MultiSite-开发/试运行/生产环境的理想设置是什么?

Intro: 我正在初步规划WordPress多站点开发环境,我所在的机构将在该环境中构建我们客户的网站。我们目前正在构建一个“香草”主题,并计划将其用作基础主题。该计划包括为每个客户端创建一个新的子主题,并使用该子主题创建客户端主题,保持普通主题不受自定义代码和覆盖的影响。我们的客户来自同一行业,因此,他们在其网站上共享相同的要求和功能。使用多站点设置有助于将所有内容保持在一个位置,并根据网站的设计进行区分。The question: 我不能清楚地想到的是一个将所有内容组织到版本控制和跨不同环境的解决方