wp eval în WordPress

Execută cod PHP cu WordPress încărcat: o linie direct din terminal (eval) sau un fișier întreg (eval-file).

Sintaxă
wp eval <php-code> [--skip-wordpress]
wp eval-file <file> [<arg>...] [--skip-wordpress] [--use-include]

Ce face wp eval

wp eval rulează o bucată de cod PHP, dată ca text, după ce WordPress s-a încărcat. E util pentru verificări rapide sau mici reparații pentru care nu există o comandă WP-CLI. Pune codul între ghilimele simple, ca shell-ul să nu interpreteze $.

wp eval-file face același lucru cu un fișier PHP: argumentele scrise după numele fișierului ajung în variabila $args, iar în fișier poți folosi WP_CLI::log() sau WP_CLI::success() pentru mesaje. Cu - în loc de nume, codul se citește din STDIN. Opțiunea --use-include (din WP-CLI 2.8.0) încarcă fișierul cu include în loc să-i evalueze conținutul.

Codul rulează în interiorul unei metode, deci variabilele globale trebuie declarate explicit: global $wpdb;. Cu --skip-wordpress codul rulează fără să încarce WordPress (doar PHP simplu).

Parametri

Parametru Descriere
<php-code> La eval: codul de executat, ca șir de caractere.
<file> La eval-file: calea către fișierul PHP; - citește codul din STDIN.
<arg>... La eval-file: argumente transmise fișierului, disponibile în $args.
--skip-wordpress Rulează codul fără să încarce WordPress.
--use-include La eval-file: încarcă fișierul cu include (din WP-CLI 2.8.0).

Exemple

Exemplul 1: O verificare rapidă, cu o variabilă globală

global $wpdb; e obligatoriu, altfel $wpdb nu e definit în interiorul codului. PHP_EOL adaugă un rând nou la final.

wp eval 'global $wpdb; echo $wpdb->prefix . PHP_EOL;'
wp eval 'echo get_bloginfo( "name" ) . PHP_EOL;'

Ieșire în terminal

wp_
Cafenea Iași

Exemplul 2: PHP fără WordPress

Cu --skip-wordpress nu se conectează la baza de date, deci merge și când site-ul are probleme.

wp eval 'echo PHP_VERSION . PHP_EOL;' --skip-wordpress

Ieșire în terminal

8.3.12

Exemplul 3: Un script cu argumente, rulat cu eval-file

Primul argument după numele fișierului ajunge în $args[0]. Fișierul poate fi păstrat în proiect și rulat ori de câte ori e nevoie.

cat > dex-raport.php <<'EOF'
<?php
$stare = $args[0] ?? 'publish';
$ids   = get_posts( array( 'post_status' => $stare, 'numberposts' => -1, 'fields' => 'ids' ) );
WP_CLI::log( "Articole cu starea {$stare}: " . count( $ids ) );
EOF
wp eval-file dex-raport.php draft

Ieșire în terminal

Articole cu starea draft: 3

Greșeli frecvente

  • Ghilimele duble în jurul codului: wp eval "echo $wpdb->prefix;" face ca shell-ul să înlocuiască $wpdb cu un text gol înainte ca PHP să-l vadă. Folosește ghilimele simple.
  • Uitarea lui global pentru $wpdb, $wp_query sau alte globale: codul rulează într-o metodă, iar variabila locală e nedefinită.
  • Rularea de cod copiat de pe internet direct pe producție: wp eval are acces complet la site și la baza de date. Încearcă întâi pe o copie locală.

Comenzi înrudite

  • wp shell: Deschide o consolă PHP interactivă cu WordPress încărcat, în care testezi funcții linie cu linie.
  • wp option get / update: Citește, modifică și listează opțiunile WordPress din tabelul wp_options direct din terminal.
  • WP_DEBUG și debug.log: Constantele din wp-config.php care pornesc modul de depanare și scriu erorile PHP în wp-content/debug.log în loc să le afișeze.