0887 371 498 support@itservice-bg.net
WP-CLI
19.07.2024 · Самуил Арсов · Bash script, Debian, Hosting, Kali Linux, Linux commands, Ubuntu

WP-CLI

WP-CLI (WordPress Command Line Interface) е инструмент за управление на WordPress сайтове чрез командния ред. Той позволява извършване на различни задачи, които обикновено се правят през администраторския панел на WordPress, но много по-бързо и автоматизирано. Ето някои от основните функции и задачи, които могат да се изпълняват с WP-CLI:

  1. Инсталация и актуализация на WordPress ядро:
    • Инсталиране на нова инсталация на WordPress.
    • Актуализиране на ядрото до най-новата версия.
  2. Управление на плъгини и теми:
    • Инсталиране, активиране, деактивиране, актуализиране и изтриване на плъгини и теми.
  3. Управление на потребители:
    • Създаване, изтриване, редактиране на потребители.
    • Промяна на потребителски роли и пароли.
  4. Управление на съдържание:
    • Създаване, редактиране и изтриване на публикации и страници.
    • Импортиране и експортиране на съдържание.
  5. Административни задачи:
    • Архивиране на базата данни.
    • Промяна на конфигурационни настройки.
    • Изпълнение на cron задачи.

WP-CLI е особено полезен за разработчици и администратори на сайтове, които трябва да изпълняват повторяеми задачи, управляват множество сайтове или автоматизират работни процеси. За да използвате WP-CLI, е необходимо да имате достъп до командния ред на твоя сървър, където е инсталиран WordPress.

Как да инсталирам в Ubuntu wp-cli ?

За да инсталирате WP-CLI на Ubuntu, следвайте тези стъпки:

Инсталирайте необходими зависимости: Уверете се, че имате инсталирани curl и php-cli, които са необходими за изпълнението на WP-CLI.

    sudo apt update
    sudo apt install curl php-cli

    Свалете WP-CLI: Изтеглете последната версия на WP-CLI с помощта на curl.

    curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar

    Направете файла изпълним: Променете разрешенията на сваления файл, за да го направите изпълним.

    chmod +x wp-cli.phar

    Преместете файла: Преместете изпълнимия файл в директория, която е в системния ви PATH, за да можеш да го използваш като глобална команда wp.

    sudo mv wp-cli.phar /usr/local/bin/wp

    Проверете инсталацията: Уверете се, че WP-CLI е инсталиран правилно, като изпълните командата wp --info.

    wp --info

    Ако всичко е наред, ще видите информация за твоята инсталация на WP-CLI.

    Това е всичко! Сега можеш да използваш WP-CLI на твоята Ubuntu система, за да управляваш WordPress сайтове чрез командния ред.

    Команди

    wp cli update

    Командата wp cli update се използва за актуализиране на WP-CLI до последната версия. Когато изпълните тази команда, WP-CLI проверява дали има налична нова версия и, ако има такава, я изтегля и инсталира.

    wp core version

    Командата wp core version в WP-CLI се използва за показване на текущата версия на инсталирания WordPress. Тази команда не променя нищо в конфигурацията или файловете на сайта; тя само извежда информация за версията.

    wp core check-update

    Командата wp core check-update в WP-CLI се използва за проверка на налични актуализации за ядрото на WordPress. Когато изпълните тази команда, тя ще провери текущата инсталация на WordPress и ще върне информация за наличните нови версии, ако има такива.

    wp core update

    Командата wp core update в WP-CLI се използва за актуализиране на ядрото на WordPress до последната налична версия. Тази команда е полезна за поддържане на твоята WordPress инсталация актуална с най-новите функции, подобрения и корекции на сигурността.

    wp theme list

    Командата wp theme list в WP-CLI се използва за извеждане на списък с всички инсталирани теми в WordPress инсталацията. Тази команда предоставя информация за всяка тема, като име, статус (активна или неактивна), версия и други детайли.

    wp theme delete theme_name

    Командата wp theme delete в WP-CLI се използва за изтриване на една или повече инсталирани теми в WordPress. За да изтриете тема, трябва да посочите името на темата, която искате да премахнете. Тази команда е полезна за освобождаване на пространство и за премахване на ненужни теми от твоята WordPress инсталация.

    wp plugin list

    Командата wp plugin list в WP-CLI се използва за извеждане на списък с всички инсталирани плъгини в WordPress инсталацията. Тази команда предоставя информация за всеки плъгин, като име, статус (активен или неактивен), версия и други детайли.

    wp checksum core

    Командата wp checksum core в WP-CLI се използва за проверка на целостта на файловете на ядрото на WordPress. Тази команда сравнява файловете във твоята инсталация с оригиналните файлове от официалното издание на WordPress. Ако има несъответствия, това може да означава, че някои файлове са променени или компрометирани.

    wp db check

    Командата wp db check в WP-CLI се използва за проверка на целостта на базата данни, свързана с твоята WordPress инсталация. Тази команда изпълнява MySQL команда за проверка на базата данни и съобщава за всякакви проблеми, които открие.

    wp theme update --all

    Командата wp theme update --all в WP-CLI се използва за актуализиране на всички инсталирани теми до най-новите им версии. Тази команда е много полезна за поддържане на всички теми актуални, което може да помогне за подобряване на сигурността и производителността на твоя WordPress сайт.

    wp plugin update --all

    Командата wp plugin update --all в WP-CLI се използва за актуализиране на всички инсталирани плъгини до най-новите им версии. Това е изключително полезно за поддържане на твоя WordPress сайт актуален и сигурен, като осигурява, че всички плъгини използват последните налични версии с всички поправки и нови функции.

    wp plugin search siteground

    Командата wp plugin search в WP-CLI се използва за търсене на плъгини в WordPress.org Plugin Directory. Когато изпълните тази команда с ключова дума, WP-CLI ще върне списък с плъгини, които съответстват на тази ключова дума. wp plugin search siteground: Тази команда търси плъгини, свързани с ключовата дума „siteground“ в WordPress.org Plugin Directory.

    wp plugin install sg-security

    Командата wp plugin install в WP-CLI се използва за инсталиране на плъгини от WordPress.org Plugin Directory. В случая, командата ще инсталира плъгина SG Security. Това ще изтегли, разопакова и инсталира плъгина SG Security във твоята WordPress инсталация. Ако искате автоматично да активирате плъгина след инсталацията, добавете флага --activate:

    wp plugin activate sg-security

    Командата wp plugin activate в WP-CLI се използва за активиране на инсталиран плъгин в WordPress. В случая, командата ще активира плъгина SG Security.

    wp user list

    Командата wp user list в WP-CLI се използва за извеждане на списък с всички потребители във твоята WordPress инсталация. Тази команда предоставя информация за всеки потребител, като потребителско име, имейл адрес, роля, статус и други детайли.

    +----+------------+--------------+---------------------+---------------------+---------------+
    | ID | user_login | display_name | user_email          | user_registered     | roles         |
    +----+------------+--------------+---------------------+---------------------+---------------+
    | 1  | ivan       | ivan         | ivan@example.com   | 2023-01-01 00:00:00 | administrator |
    | 2  | dragan     | dragan       | dragan@example.com | 2023-01-02 00:00:00 | editor        |
    | 3  | petkan     | petkan       | petkan@example.com | 2023-01-03 00:00:00 | subscriber    |
    +----+------------+--------------+---------------------+---------------------+---------------+

    В таблицата ще видите следната информация:

    • ID: Уникалният идентификатор на потребителя.
    • user_login: Потребителското име на потребителя.
    • display_name: Името за показване на потребителя.
    • user_email: Имейл адресът на потребителя.
    • user_registered: Датата и часът, когато потребителят се е регистрирал.
    • roles: Ролята на потребителя в сайта (например, администратор, редактор, абонат).
    wp user update 3 --display_name='потребител' --user_pass='парола'

    Командата wp user update в WP-CLI се използва за актуализиране на информацията за съществуващ потребител. В конкретния случай, командата актуализира потребителя с ID 3, като задава ново име за показване и нова парола. Освен --display_name и --user_pass, командата wp user update поддържа и други опции за актуализиране на потребителска информация, като:

    --role=<role>: Промяна на ролята на потребителя.

    --user_login=<login>: Промяна на потребителското име.

    --user_nicename=<nicename>: Промяна на slug на потребителя.

    --user_email=<email>: Промяна на имейл адреса.

    --user_url=<url>: Промяна на URL адреса на потребителя.

    --nickname=<nickname>: Промяна на прякора на потребителя.

    --first_name=<first_name>: Промяна на първото име на потребителя.

    --last_name=<last_name>: Промяна на фамилното име на потребителя.

    --description=<description>: Промяна на описанието на потребителя.

    wp user create samyil support@itservice-bg.net --role=administrator

    Командата wp user create в WP-CLI се използва за създаване на нов потребител във твоята WordPress инсталация. В конкретния случай, командата създава нов потребител с потребителско име samyil, имейл адрес support@itservice-bg.net и роля administrator. Командата wp user create поддържа и други опции за задаване на допълнителна информация за новия потребител, като:

    --description=<description>: Задаване на описание на потребителя.

    --user_pass=<password>: Задаване на конкретна парола за новия потребител. Ако не е зададена, ще бъде генерирана автоматично.

    --user_registered=<date>: Задаване на дата на регистрация на потребителя. Форматът трябва да бъде YYYY-MM-DD.

    --display_name=<name>: Задаване на име за показване на новия потребител.

    --user_nicename=<nicename>: Задаване на slug на потребителя.

    --user_url=<url>: Задаване на URL адрес на потребителя.

    --nickname=<nickname>: Задаване на прякор на потребителя.

    --first_name=<first_name>: Задаване на първо име на потребителя.

    --last_name=<last_name>: Задаване на фамилно име на потребителя.

    wp user delete 2

    Командата wp user delete в WP-CLI се използва за изтриване на потребител от WordPress инсталацията. В конкретния случай, командата изтрива потребителя с ID 2. Командата wp user delete поддържа и няколко опции, които могат да бъдат полезни при изтриването на потребител:

    --reassign=<user_id>: Пренасочване на съдържанието на изтрития потребител към друг потребител с определен ID. Това е полезно, за да не се загуби съдържание (публикации, страници и т.н.), създадено от изтрития потребител.

    Допълнителни опции

    Командата wp user list поддържа различни опции за филтриране и форматиране на изхода. Някои от полезните опции включват:

    wp user list --role=administrator

    –field=<field>: Извеждане само на определено поле. Например, за да видите само имейл адресите на потребителите:

    wp user list --field=user_email

    –fields=<fields>: Извеждане на определени полета. Например, за да видите само потребителското име и имейла:

    wp user list --fields=user_login,user_email

    –fields=<fields>: Извеждане на определени полета. Например, за да видите само потребителското име и имейла:

    wp user list --format=json

    –format=<format>: Определяне на формата на изхода (table, csv, json, yaml, ids). Например, за да получите изхода в JSON формат:

    Скрипт за проверка на файлове

    Създаваме файла wpcheck.sh

    vim wpcheck.sh

    Копираме скрипта в него.

    #!/bin/bash
    
    # Script wp-cli Check Wordpres Direcory
    # Author: (c)2019-2024 Samuil Arsov <support@itservice-bg.net>
    # Based on Debian/Ubuntu ISPconfig server
    
    SITE="
    /var/www/itservice-bg.net/web
    /var/www/avtogarapleven.com/web
    /var/www/eltransportpleven.com/web
    /var/www/visitpleven.com/web"
    
    for dir in ${SITE} ; do
            cd ${dir}/;
            echo " `pwd` " ;
            wp checksum core --allow-root
            echo "" ; cd ../.. ;
      done

    Променяме правата за изпълнение на скрипта и го стартираме.

    sudo chmod 755 wpcheck.sh
    sudo ./wpcheck.sh

    Примерен резултат.

    Скрипт с обхождане на всички директории в /var/www

    #!/bin/bash
    
    # Script wp-cli Check Wordpres Direcory
    # Author: (c)2019-2024 Samuil Arsov <support@itservice-bg.net>
    # Based on Debian/Ubuntu ISPconfig server
    
    # Обхождане на всички директории в /var/www/
    for dir in /var/www/*/web; do
        # Проверка дали е директория
        if [ -d "$dir" ]; then
            # Проверка дали wp-config.php съществува в директорията
            if [ -f "$dir/wp-config.php" ]; then
                echo "$dir"
                # Изпълняване на wp checksum core
                wp --path="$dir" checksum core --allow-root
                echo "---------------------------"
            fi
        fi
    done

    Резултат от обхождането.

    Подобрена версия на скрипта с проверки

    #!/bin/bash
    
    # Script wp-cli Check Wordpres Direcory
    # Author: (c)2019-2024 Samuil Arsov <support@itservice-bg.net>
    # Based on Debian/Ubuntu ISPconfig server
    
    # Проверка дали wp-cli е инсталиран
    if ! command -v wp &> /dev/null; then
        echo "WP-CLI не е инсталиран. Моля, инсталирайте го и опитайте отново."
        exit 1
    fi
    
    # Обхождане на всички директории в /var/www/
    for dir in /var/www/*/web; do
        # Проверка дали е директория
        if [ -d "$dir" ]; then
            # Проверка дали wp-config.php съществува в директорията
            if [ -f "$dir/wp-config.php" ]; then
                echo "Изпълнява wp checksum core в $dir"
                # Изпълняване на wp checksum core
                wp --path="$dir" checksum core --allow-root
                echo "---------------------------"
                # Проверка за грешки при изпълнението на командата
                if [ $? -ne 0 ]; then
                    echo "Грешка при изпълнението на wp checksum core в $dir"
                else
                    echo "wp checksum core изпълнен успешно в $dir"
                fi
            else
                echo "wp-config.php не е намерен в $dir"
            fi
        else
            echo "$dir не е директория"
        fi
    done