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ă$wpdbcu un text gol înainte ca PHP să-l vadă. Folosește ghilimele simple. - Uitarea lui
globalpentru$wpdb,$wp_querysau alte globale: codul rulează într-o metodă, iar variabila locală e nedefinită. - Rularea de cod copiat de pe internet direct pe producție:
wp evalare 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.