触发高级自定义字段 (ACF) 'acf/save_post' 操作

时间:2021-02-27 17:35:47

标签: wordpress hook action advanced-custom-fields

我在此处阅读了 ACF 'acf/save_post' 文档:enter link description here,其中说明此操作可让用户在保存/更新帖子之前或之后添加其他功能。我想测试这个动作什么时候触发。

我创建了一个自定义帖子类型和一组链接到该自定义帖子类型的 ACF 自定义字段。这包括我使用 ACF 入门工具包创建的一些 ACF 自定义字段类型(请参阅:enter link description here),它们用于某些 ACF 自定义字段。当我编辑自定义帖子然后单击 Gutenberg 编辑器中的“更新”按钮时,我希望触发“acf/save_post”操作,但它似乎没有这样做。也许我错过了一些东西。这是我主题的“function.php”文件中的相关代码。

function my_acf_save_post($post_id) {
  console_log("Testing...");
}
add_action('acf/save_post', 'my_acf_save_post', 20);

function console_log($output, $with_script_tags = true) {
  $js_code = 'console.log(' . json_encode($output, JSON_HEX_TAG) . ')';

  if($with_script_tags) {
    $js_code = '<script>' . $js_code . '</script>';
  }

  echo $js_code;
}

引用“console_log”功能:Kim Sia(参见:https://stackify.com/how-to-log-to-console-in-php/)。

我为自定义帖子类型帖子的编辑器打开了网络浏览器的检查器窗口。修改帖子并单击“更新”后,检查器的控制台窗格中不会显示任何内容。我在 ACF 论坛上发布了相关信息,但没有收到任何回复。

感谢您的反馈。谢谢。

1 个答案:

答案 0 :(得分:1)

在下面找到有关如何在 WordPress 中调试该 ACF 挂钩的说明。 更多详情的官方文件:https://wordpress.org/support/article/debugging-in-wordpress/

请注意,在 WordPress 中还有其他更复杂、更有效的调试方法,例如使用合适的调试器,如 xdebug。

虽然这些通常更难设置,所以在这里我向您提供“内置 WordPress”方式,这种方式可能很简单,但既简单又有效。

启用调试

首先,您需要在 wp-config.php 中启用调试,我认为您已经这样做了,但是对于阅读此答案的其他人,您应该做的是:

  1. 在文本编辑器中打开名为 wp-config.php 的文件,该文件位于 wordpress 安装根目录

  2. 将以下内容添加到此文件中:

    define('WP_DEBUG', true); => 启用调试

    define('WP_DEBUG_DISPLAY', false); => 这可以防止错误日志显示在屏幕上(影响前端和后端)

    define('WP_DEBUG_LOG', true); => 这会将输出记录到一个文件中,然后您可以在其中进行检查

您必须在行上方添加 yes 或 yes /* 就是这样,停止编辑!快乐的博客。 */

完成!现在,默认情况下,您将登录到一个文件,该文件将在名为 debug.log 的 wp-content 目录的根目录中生成。

警告!建议不要在生产环境中启用调试,并且建议不要保留 debug.log 文件,因为它可能会暴露合理的站点信息。仅用于开发,完成后禁用和删除文件。文件也可以保存到自定义文件名和位置,请参阅文档。

错误日志

console.log 通常用于调试js。

要使用上面启用的调试器在 PHP 中记录您的函数,请执行以下操作:

function my_acf_save_post($post_id) {
   
   error_log( 'Saved post ID : ' . $post_id, false);
   error_log( var_export($_POST, true), false );

   //If you want to log what got saved to the database
   error_log( var_export(get_post($post_id), true), false );

}
add_action('acf/save_post', 'my_acf_save_post', 20);

您应该在 wp-content 目录根目录下的名为 debug.log 的文件中找到保存的帖子数据和 ACF 数据。

登录到屏幕

如果您想要的是看到将写入文件的输出,但直接在屏幕上,您不需要 error_log() 函数,而是按如下所示执行此操作:

function my_acf_save_post($post_id) {
   
   echo 'Saved post ID : ' . $post_id;
  
   // Add <pre> tags to format the output in an easily readable way:
   echo '<pre>';
   print_r($_POST);
   echo '</pre>';
}
add_action('acf/save_post', 'my_acf_save_post', 20);
相关问题