我正在尝试使用本地导入数据库,wp db import databasename.sql但是我收到以下错误:env: mysql: No such file or directory.谁能告诉我如何解决这个问题?
在docker中使用WP CLI时,我需要以root身份执行它。我需要--allow-root直接在 .bashrc 中添加该标志,我试图找出它不起作用的原因。
FROM webdevops/php-dev:7.3
# configure postfix to use mailhog
RUN postconf -e "relayhost = mail:1025"
# install wp cli
RUN curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar && \
chmod +x wp-cli.phar && \
mv wp-cli.phar /usr/local/bin/wp && \
echo 'wp() {' >> ~/.bashrc && \
echo '/usr/local/bin/wp "$@" --allow-root' >> ~/.bashrc && \
echo '}' >> ~/.bashrc
WORKDIR /var/www/html/
Run Code Online (Sandbox Code Playgroud)
我的.bashrc
# ~/.bashrc: executed by bash(1) for non-login shells.
# Note: PS1 and umask are already set in /etc/profile. …Run Code Online (Sandbox Code Playgroud) 我正在尝试在 Ubuntu 14.04 上进行 WordPress 插件测试,我正在设置 WP-CLI,但我无法下载必要的文件(includes/functions.php)。
这是我正在使用的命令:
bash bin/install-wp-tests.sh wordpress_test root '' localhost latest
Run Code Online (Sandbox Code Playgroud)
这是输出:
+ install_wp
+ '[' -d /tmp/wordpress/ ']'
+ return
+ install_test_suite
++ uname -s
+ [[ Linux == \D\a\r\w\i\n ]]
+ local ioption=-i
+ '[' '!' -d /tmp/wordpress-tests-lib ']'
+ cd /tmp/wordpress-tests-lib
+ '[' '!' -f wp-tests-config.php ']'
+ download https://develop.svn.wordpress.org/trunk/wp-tests-config-sample.php /tmp/wordpress-tests-lib/wp-tests-config.php
++ which curl
+ '[' /opt/lampp/bin/curl ']'
+ curl -s https://develop.svn.wordpress.org/trunk/wp-tests-config-sample.php
+ sed -i 's:dirname( __FILE__ ) . '\''/src/'\'':'\''/tmp/wordpress/'\'':' /tmp/wordpress-tests-lib/wp-tests-config.php
+ sed …Run Code Online (Sandbox Code Playgroud) 可以在 WooCommerce 上批量创建产品吗?我用的是wp-cli Product命令但是好像要一一创建。
<?php
$products = array(
array('title' => 'My product 1'),
array('title' => 'My product 2'),
// ...
// 10.000 more products
);
foreach ($products as $product) {
$cliProduct = new WC_CLI_Product();
$cliProduct->create(array(), $product);
WP_CLI::success("Added Product #{$product['title']}");
}
Run Code Online (Sandbox Code Playgroud)
这需要很多时间,因为它将对每个产品进行查询,更糟糕的是,这将是一个定期运行的 cron 作业。我还必须检查产品是否存在,在这种情况下,更新它而不是创建新产品。
所以查询的数量将乘以 2。
产品存在吗?更新它,否则创建它
有一个更好的方法吗?也许我应该直接查询数据库,但它看起来很脏。
是否有任何 WP 功能可以查询数据库而无需创建自己的数据库连接?
我希望能够将 json 文件传递给 WP CLI,以迭代地创建帖子。
所以我想我可以创建一个 JSON 文件:
[
{
"post_type": "post",
"post_title": "Test",
"post_content": "[leaflet-map][leaflet-marker]",
"post_status": "publish"
},
{
"post_type": "post",
"post_title": "Number 2",
"post_content": "[leaflet-map fitbounds][leaflet-circle]",
"post_status": "publish"
}
]
Run Code Online (Sandbox Code Playgroud)
并用 jq 迭代数组:
[
{
"post_type": "post",
"post_title": "Test",
"post_content": "[leaflet-map][leaflet-marker]",
"post_status": "publish"
},
{
"post_type": "post",
"post_title": "Number 2",
"post_content": "[leaflet-map fitbounds][leaflet-circle]",
"post_status": "publish"
}
]
Run Code Online (Sandbox Code Playgroud)
我希望能够迭代这些以执行类似的功能:
cat posts.json | jq --raw-output .[]
Run Code Online (Sandbox Code Playgroud)
有没有办法用jq或类似的方法来做到这一点?
到目前为止,我得到的最接近的是:
wp post create \
--post_type=post \
--post_title='Test Map' \ …Run Code Online (Sandbox Code Playgroud) 为此,我将存储库 WP CLI 复制到根 WordPress
我编写了以下PHP代码对其进行编码并遇到了以下错误
define('WP_CLI_ROOT', ABSPATH . 'wp-cli');
require_once WP_CLI_ROOT . '/php/wp-cli.php';
Run Code Online (Sandbox Code Playgroud)
Warning: include_once(D:\Web\Sites\jupiterx/wp-cli/vendor/rmccue/requests/library/Requests.php): failed to open stream: No such file or directory in D:\Web\Sites\jupiterx\wp-cli\php\WP_CLI\Bootstrap\IncludeFrameworkAutoloader.php on line 48
Warning: include_once(): Failed opening 'D:\Web\Sites\jupiterx/wp-cli/vendor/rmccue/requests/library/Requests.php' for inclusion (include_path='C:\xampp\php\PEAR') in D:\Web\Sites\jupiterx\wp-cli\php\WP_CLI\Bootstrap\IncludeFrameworkAutoloader.php on line 48
Warning: include_once(D:\Web\Sites\jupiterx/wp-cli/vendor/wp-cli/mustangostang-spyc/Spyc.php): failed to open stream: No such file or directory in D:\Web\Sites\jupiterx\wp-cli\php\WP_CLI\Bootstrap\IncludeFrameworkAutoloader.php on line 49
Warning: include_once(): Failed opening 'D:\Web\Sites\jupiterx/wp-cli/vendor/wp-cli/mustangostang-spyc/Spyc.php' for inclusion (include_path='C:\xampp\php\PEAR') in D:\Web\Sites\jupiterx\wp-cli\php\WP_CLI\Bootstrap\IncludeFrameworkAutoloader.php on line 49
Warning: array_slice() expects parameter 1 to be array, …Run Code Online (Sandbox Code Playgroud) 这个问题旨在作为其他人查找的信息帖子,因为幸运的是我已经找到了解决方案。
我尝试在 Cloudways 服务器上的 crontab 中将 Wordpress-CLI 命令作为 cron 作业运行。该命令直接在终端中运行没有任何问题,但在使用 crontab 启动时失败并出现致命 PHP 错误。
Wordpress-CLI 的基本命令如下所示:
wp migratedb profile [id]
由于 crontab 运行的上下文通常是未知的,并且 $PATH 变量可能不可用,因此我修改了命令以提供必要的绝对路径:
/usr/local/bin/wp migratedb profile [id] --path=/absolute/path/to/wordpress/core/files
同样,从终端启动时,这个修改后的命令也可以完美运行,没有任何问题。
最终的 crontab 条目看起来像这样:
0 5 * * * /usr/local/bin/wp migratedb profile [id] --path=/absolute/path/to/wordpress/core/files
当从调度程序运行时,它会产生以下错误:
PHP Fatal error: require(): Failed opening required 'wp-salt.php' (include_path='.:/usr/share/php') in phar:///usr/local/bin/wp/vendor/wp-cli/config-command/src/Config_Command.php(444) : eval()'d code on line 34
Run Code Online (Sandbox Code Playgroud)
经过一些实验,我意识到除了非常基本的命令之外,所有WP-CLI 命令都会发生此错误
wp --info
,产生以下输出:
OS: Linux 4.19.0-21-amd64 #1 SMP Debian 4.19.249-2 (2022-06-30) x86_64
Shell: /bin/sh
PHP …Run Code Online (Sandbox Code Playgroud) 我正在使用 wp-cli 工具来搜索站点的 url 并将其替换为新的 url。我在 wordpress 安装目录中的命令行中执行此命令:
C:\xampp\htdocs\somewebsite>wp search-replace 'somewebsite.com' 'new_website.com'
Run Code Online (Sandbox Code Playgroud)
该命令不会发出任何错误,当我使用此 sql 检查数据库时:
SELECT * FROM wp_options WHERE option_value LIKE '%new_website.com%'
Run Code Online (Sandbox Code Playgroud)
我得到零结果。
我在 wp.config 文件中正确设置了用户名、密码、数据库名称、位置。
编辑
这是否与 sql 文件权限有关?
编辑 好吧 wp-cli 对我不起作用,但https://interconnectit.com/products/search-and-replace-for-wordpress-databases/做了。确保您在撰写本文时使用稳定版本,即:v2.1.0 STABLE。