首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WP-Cli Multisite报告

WP-Cli Multisite报告
EN

Stack Overflow用户
提问于 2015-11-10 20:57:28
回答 1查看 553关注 0票数 1

我有一个多站点安装和wp-cli设置和工作。最优的情况是,我需要一个脚本来运行,它将生成多站点安装上的所有站点的列表以及活动主题的名称。

我可以弄清楚如何在一个站点的基础上运行这一点,但真正需要的是生成列表的能力。

我们的网络中有一些400+站点,每周都在增长。有人处理过这个问题吗?

更新:虽然我觉得这个可以进行更好的优化,但我现在已经让它大部分都在工作了。

我将它保存为list_active_themes.sh,并通过运行sh list_active_themes.sh > active_themes.json将其作为JSON文件输出。

最后一部分是删除后面的逗号,这是下面第9行的结果--我不知道如何计算返回的site结果,以便执行if语句,如果逗号是for循环中的最后一行,就不输出逗号。

这是我的密码:

代码语言:javascript
复制
echo "{"
for site in $(wp site list --domain=sample.domain.com --field=url --quiet)
    do
        echo -e '\t"site":{'
            printf '\t\t"url":"%s",\n' "$site"
            echo -e '\t\t"theme":"'|tr '\n' ''
            wp theme list --status=active --field=name --url=$site|tr '\n' ''
            echo '"'
        echo -e '\n\t},'
    done
echo "}"
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-14 01:52:44

我们可以将任务分成两个基本操作:

  1. 列出多站点安装中的所有站点:wp site list
  2. 获取主题列表:wp theme list

通过这些信息,我们可以获得网络中所有站点URL的列表:

代码语言:javascript
复制
wp site list --field=url

通过了解站点URL,我们可以列出相关的active主题:

代码语言:javascript
复制
wp theme list --status=active --url="<site_url>"

现在,我们可以设置一个基本bash脚本来遍历网络中的每个站点,并获得相关的主题:

代码语言:javascript
复制
#!/bin/bash
for site in $(wp site list --field=url)
do
    wp theme list --status=active --url=$site
done

将其保存到一个文件(例如list_active_themes.sh)中,并从终端运行它:

代码语言:javascript
复制
sh list_active_themes.sh

现在,让我们返回包含站点URL +主题名称的自定义列表,其结构如下:

代码语言:javascript
复制
Site: <site_url> Theme: <theme_name>

相应的bash脚本可能如下所示:

代码语言:javascript
复制
#!/bin/bash
for site in $(wp site list --field=url)
do
    echo Site:|tr '\n' ' '
    echo $site|tr '\n' ' '
    echo Theme:|tr '\n' ' '
    wp theme list --status=active --field=name --url=$site
done

(表达式|tr '\n' ' '用空格替换换行符,|tr -d '\n'完全删除换行符。)

更新:

使用--format=count选项将返回站点总数;我们可以使用该值作为循环中的条件,并生成类似于JSON的结构(如您的注释中所建议的):

代码语言:javascript
复制
#!/bin/bash
COUNTER=1
SITES=$(wp site list --format=count)
echo "{"
for site in $(wp site list --field=url)
    do
        echo '\t"site":{'
            printf '\t\t"url":"%s",\n' "$site"
            echo '\t\t"theme":"'|tr -d '\n'
            wp theme list --status=active --field=name --url=$site|tr -d '\n'
            echo '"'
        echo '\n\t}'|tr -d '\n'
        if (($COUNTER != $SITES)); then
            echo ,
        fi
        COUNTER=$[$COUNTER +1]
    done
echo "\n}"

上面的脚本将返回如下内容:

代码语言:javascript
复制
{
    "site":{
        "url":"http://site_one.dev/",
        "theme":"theme_one"
    },
    "site":{
        "url":"http://site_one.dev/",
        "theme":"theme_two"
    }
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33639478

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档