WooCommerce 在发布产品时触发操作并创建日志文件
WooCommerce triggering an action and creating a log file when product is published
在 WooCommerce 中,我试图在发布产品时触发一个操作,但它不起作用,这是我的代码:
add_action( 'transition_post_status', 'my_call_back_function', 10, 3 );
function my_call_back_function( $new_status, $old_status, $post ) {
if (
'product' !== $post->post_type ||
'publish' !== $new_status ||
'publish' === $old_status
) {
return;
}
file_put_contents( 'file.txt', 'Product published', FILE_APPEND );
}
我在这里尝试创建一个文件并在其中放入一些文本。但是正如我所说,文件没有创建。
我使用的是 wordpress 5.8.1 和 Woocommerce 5.8.0。问题是什么以及如何解决?非常感谢您的帮助。
提前致谢。
错误不在钩子本身!这是您定义日志文件路径的方式。
有几种方法可以做到这一点。
以下代码是我个人的喜好,因为我认为它更灵活,更易读:
add_action('transition_post_status', 'my_call_back_function', 10, 3);
function my_call_back_function($new_status, $old_status, $post)
{
if (
'product' !== $post->post_type ||
'publish' !== $new_status ||
'publish' === $old_status
) {
return;
}
$your_custom_file = __DIR__ . '/zzz.txt';
if (!file_exists($your_custom_file)) {
$file = fopen($your_custom_file, 'w');
fwrite($file, 'Product published');
fclose($file);
} else {
$file = fopen($your_custom_file, 'a');
fwrite($file, ',');
fwrite($file, 'Product published');
fclose($file);
}
}
注:
- 我将文件命名为“zzz.txt”只是为了给你举个例子!请随意更改其名称!
$your_custom_file
指向主题的根目录。如果您想将文件保存在子目录中,请随意更改它。
- 如果您的文件已经存在,那么我会用
,
分隔日志。再次随意更改它!
使用file_put_contents
函数的另一种方式。
add_action('transition_post_status', 'my_call_back_function', 10, 3);
function my_call_back_function($new_status, $old_status, $post)
{
if (
'product' !== $post->post_type ||
'publish' !== $new_status ||
'publish' === $old_status
) {
return;
}
$your_custom_file = __DIR__ . '/zzz.txt';
file_put_contents($your_custom_file, 'Product published', FILE_APPEND);
}
两种解决方案都已在 wordpress 5.8.1
和 Woocommerce 5.8
上进行了测试并且工作正常!
在 WooCommerce 中,我试图在发布产品时触发一个操作,但它不起作用,这是我的代码:
add_action( 'transition_post_status', 'my_call_back_function', 10, 3 );
function my_call_back_function( $new_status, $old_status, $post ) {
if (
'product' !== $post->post_type ||
'publish' !== $new_status ||
'publish' === $old_status
) {
return;
}
file_put_contents( 'file.txt', 'Product published', FILE_APPEND );
}
我在这里尝试创建一个文件并在其中放入一些文本。但是正如我所说,文件没有创建。
我使用的是 wordpress 5.8.1 和 Woocommerce 5.8.0。问题是什么以及如何解决?非常感谢您的帮助。
提前致谢。
错误不在钩子本身!这是您定义日志文件路径的方式。
有几种方法可以做到这一点。
以下代码是我个人的喜好,因为我认为它更灵活,更易读:
add_action('transition_post_status', 'my_call_back_function', 10, 3);
function my_call_back_function($new_status, $old_status, $post)
{
if (
'product' !== $post->post_type ||
'publish' !== $new_status ||
'publish' === $old_status
) {
return;
}
$your_custom_file = __DIR__ . '/zzz.txt';
if (!file_exists($your_custom_file)) {
$file = fopen($your_custom_file, 'w');
fwrite($file, 'Product published');
fclose($file);
} else {
$file = fopen($your_custom_file, 'a');
fwrite($file, ',');
fwrite($file, 'Product published');
fclose($file);
}
}
注:
- 我将文件命名为“zzz.txt”只是为了给你举个例子!请随意更改其名称!
$your_custom_file
指向主题的根目录。如果您想将文件保存在子目录中,请随意更改它。- 如果您的文件已经存在,那么我会用
,
分隔日志。再次随意更改它!
使用file_put_contents
函数的另一种方式。
add_action('transition_post_status', 'my_call_back_function', 10, 3);
function my_call_back_function($new_status, $old_status, $post)
{
if (
'product' !== $post->post_type ||
'publish' !== $new_status ||
'publish' === $old_status
) {
return;
}
$your_custom_file = __DIR__ . '/zzz.txt';
file_put_contents($your_custom_file, 'Product published', FILE_APPEND);
}
两种解决方案都已在 wordpress 5.8.1
和 Woocommerce 5.8
上进行了测试并且工作正常!