因此,在某些情况下,我使用gatsby创建了一个站点,该站点从Wordpress的API中提取数据。我发现将帖子保存到我的 functions.ph p文件中后,可以触发wordpress中的钩子触发。
add_action( 'save_post', 'fireFunctionOnSave' );
function fireFunctionOnSave($post_id)
{
if(wp_is_post_revision( $post_id) || wp_is_post_autosave( $post_id ))
{
return;
}
$old_path = getcwd();
chdir('/Applications/MAMP/htdocs/elliot-wp-gatsby/wp-
content/themes/twentyseventeen/');
$output = shell_exec('./build.sh');
chdir($old_path);
$myfile = fopen("/Applications/MAMP/htdocs/elliot-wp-gatsby/wp-
content/themes/twentyseventeen/output.txt", "w") or die("Unable to open
file!");
fwrite($myfile, $output);
fclose($myfile);
}
到目前为止,它可以打开并运行我的Shell脚本,但实际上不会运行gatsby来构建任何人有任何想法吗?这是我的shell脚本。
#!/bin/bash
cd /Users/elliotm/Dev-local/Projects/gatsby-wp
npm run build
echo "site built/deployed"
谢谢
答案 0 :(得分:0)
我不确定shell_exec是否可以与bash脚本和更改目录一起使用。请尝试:exec('cd /Users/elliotm/Dev-local/Projects/gatsby-wp && npm run build')
。
&&
将强制执行程序仅在第一部分成功的情况下才执行第二部分。