¿Cómo puedo crear una CLAVE API para woocommerce por WP-CLI?

3 minutos de lectura

¿Cómo puedo crear una CLAVE API para woocommerce por WP-CLI?

Estoy creando una tienda WooCommerce con estos comandos:

sudo /usr/local/bin/wp --info --allow-root
sudo /usr/local/bin/wp cli update --allow-root
sudo /usr/local/bin/wp core download --allow-root
sudo /usr/local/bin/wp core config --dbname=$MYSQL_DATABASE --dbuser=$MYSQL_USER --dbpass=$MYSQL_PASSWORD --allow-root
sudo chown -R apache:apache wp-config.php
sudo /usr/local/bin/wp core install --url=$URL --title="$WP_TITLE" --admin_user=$WP_USERNAME --admin_password=$WP_PASSWORD --admin_email=$WP_MAIL --allow-root

sudo /usr/local/bin/wp theme install woot storefront --allow-root
sudo /usr/local/bin/wp plugin install homepage-control  --allow-root
sudo /usr/local/bin/wp plugin activate homepage-control  --allow-root
sudo /usr/local/bin/wp theme activate woot --allow-root

sudo /usr/local/bin/wp plugin install woocommerce  --allow-root
sudo /usr/local/bin/wp plugin activate woocommerce  --allow-root

sudo /usr/local/bin/wp post delete 1 --allow-root

Después de eso, necesito crear una nueva CLAVE para la API por línea de comando, ¿alguien puede ayudarme, por favor?

Gracias

Aquí hay un script bash que hice que hará exactamente lo que quieres hacer. Si te gusta esta respuesta, por favor muéstrame un poco de amor, esto me tomó mucho tiempo.

        as_web_user() {
            su $user --shell $SHELL -c "$*"
        }

        # Run the wp commands as web-user
        # This part has some inspiration from https://github.com/autopilotpattern/wordpress/blob/master/bin/prestart.sh
        as_web_user "wp core install --url=\"$WORDPRESS_SITE_URL\" \
          --title=\"$WORDPRESS_SITE_TITLE\" \
          --admin_user=\"$WORDPRESS_ADMIN_USER\" \
          --admin_password=\"$WORDPRESS_ADMIN_PASSWORD\" \
          --admin_email=\"$WORDPRESS_ADMIN_EMAIL\" "

        if [ -n "$WORDPRESS_ACTIVE_THEME" ]; then
            as_web_user "wp theme activate \"$WORDPRESS_ACTIVE_THEME\""
        fi

        # TODO: install plugins from env variable and ensure woocommerce
        as_web_user "wp plugin install woocommerce --activate"

        # Set up woocommerce
        as_web_user "wp wc tool run install_pages --user=\"$WORDPRESS_ADMIN_USER\""
        # Creates the woocommerce_api_keys table if it doesn't exist

        if [ -n $WOOCOMMERCE_CONSUMER_KEY ] && [ -n $WOOCOMMERCE_CONSUMER_SECRET ]; then

            as_web_user "wp eval 'WC_Install::install();'"

            as_web_user "wp eval '
                global \$wpdb; 
                echo \$wpdb->insert(
                    \$wpdb->prefix . \"woocommerce_api_keys\", 
                    array(
                        \"user_id\"=>1, 
                        \"permissions\"=>\"read_write\", 
                        \"consumer_key\"=> wc_api_hash( \"$WOOCOMMERCE_CONSUMER_KEY\" ), 
                        \"consumer_secret\"=> \"$WOOCOMMERCE_CONSUMER_SECRET\", 
                        \"truncated_key\" => substr( \"$WOOCOMMERCE_CONSUMER_SECRET\", -7 ) 
                    ), 
                    array( \"%d\", \"%s\", \"%s\",\"%s\",\"%s\", ) 
                );'"
        fi

        if [ -n "$WOOCOMMERCE_TEST_DATA" ] && [ ! -f "sample_products.xml" ]; then
            as_web_user "wp plugin install wordpress-importer --activate"
            as_web_user "curl -OL https://raw.githubusercontent.com/woocommerce/woocommerce/master/sample-data/sample_products.xml"
            as_web_user "wp import sample_products.xml --authors=create"
        fi

Deberá proporcionar estas variables de entorno

        WORDPRESS_SITE_URL
        WORDPRESS_SITE_TITLE
        WORDPRESS_ADMIN_USER
        WORDPRESS_ADMIN_PASSWORD
        WORDPRESS_ADMIN_EMAIL
        WORDPRESS_ACTIVE_THEME
        WOOCOMMERCE_TEST_DATA
        WOOCOMMERCE_CONSUMER_KEY
        WOOCOMMERCE_CONSUMER_SECRET
        user # the web user (e.g. www-data)

Esto es parte de mi imagen acoplable para aprovisionar una instalación de WooCommerce completa con claves API y datos de prueba.

  • Gracias. Es triste que los desarrolladores de woocommerce no admitan esto a través de CLI

    – Dr. Deo

    18 sep 2021 a las 16:07

Esta es una modificación de la respuesta de @Derwent, ya que no pude entender la suya. wp eval comando para trabajar:

WOOCOMMERCE_CONSUMER_KEY=<key> WOOCOMMERCE_CONSUMER_SECRET=<secret> wp eval '
global $wpdb;
echo $wpdb->insert(
  $wpdb->prefix . "woocommerce_api_keys",
  array(
    "user_id" => 1,
    "description" => "Frontend Client",
    "permissions" => "read",
    "consumer_key"=> wc_api_hash(getenv("WOOCOMMERCE_CONSUMER_KEY")),
    "consumer_secret" => getenv("WOOCOMMERCE_CONSUMER_SECRET"),
    "truncated_key" => substr(getenv("WOOCOMMERCE_CONSUMER_SECRET"), -7)
  )
);'

El problema principal con el que me estaba encontrando era que $WOOCOMMERCE_CONSUMER_KEY no era reconocible dentro wp eval. los getenv La función PHP resuelve esto.

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad