Tous font la même chose:
wp post list --post_type=page
wp post list --post_type=page --post_title=dfdsfds
wp post list --post_type=page --title=sdfdsf
Comment interroger le message par son titre? En revanche, en utilisant --name
cela fonctionne très bien:
wp post list --post_type=page --name=sdfdsf
Si nous nous limitons à la sortie de wp post list
, alors voici un moyen de rechercher %test%
dans le posts titres de published posts:
wp post list --ignore_sticky_posts=1 --post__in=$(wp db query 'SELECT ID FROM wp_posts WHERE post_title LIKE "%test%" AND post_status="publish" AND post_type="post"' --skip-column-names | paste -s -d ',' - )
Voici la vue étendue:
wp post list #<-- the first wp command
--ignore_sticky_posts=1 #<-- get rid of stickies
--post__in= #<-- only specific post IDs
$(wp db query #<-- the second wp command
'SELECT ID #<-- only get the post IDs
FROM wp_posts #<-- table name, adjust the prefix!
WHERE post_title LIKE "%test%" #<-- title search Word
AND post_status="publish" #<-- published
AND post_type="post"' #<-- posts
--skip-column-names #<-- Skip the ID column name
| paste -s -d ',' - #<-- csv
)
Update:
Pour des cas exacts, on peut remplacer post_title LIKE "%test%"
par post_title = "test"
.
Nous pouvons utiliser --skip-column-names
pour supprimer le nom de colonne ID
de la sortie de la requête interne, au lieu d'utiliser sed 's/^ID,//'
pour le supprimer. Ce serait bien si nous pouvions utiliser --format=csv
au lieu d'utiliser | paste -s -d ',' -
, mais actuellement, cela ne semble pas être pris en charge par la commande wp db query
.
Il existe également le wp db search
commande , mais nous ne pouvons actuellement le limiter qu'à une ou plusieurs tables, comme wp db search test wp_posts
, mais pas à une colonne de table donnée. On pourrait par exemple essayez de jouer avec wp db search test wp_posts --one_line | grep wp_posts:post_title
, c.-à-d. cherchez dans la table wp_posts
entière et filtrez la sortie contenant wp_posts:post_title
, grâce à --one_line
. Mais notez que ceci consiste à parcourir toute la table en premier!
Il y a aussi le wp Shell
qui invite le shell wp-cli, où l'on a accès aux classes et fonctions WordPress, comme WP_Query
et get_page_by_title()
.
Il est également possible d'exécuter wp eval
commande et le wp evail-file
commande d'exécuter un code php donné. Voici un exemple: wp eval 'print_r( get_page_by_title( "test" ) );