在提出这个问题之前,我浏览了很多关于 SO 的博客和帖子。
我正在使用 WooCommerce 插件并尝试通过操作 Hook 获取产品数据以传递给第 3 方 API。
我尝试了各种代码块,但没有一个给我产品信息。
因此,我尝试在 WooCommerce 上添加/更新/删除产品,并在我的子主题的 functions.php 文件中放置以下 Hook 。
Hook 1
function on_all_status_transitions( $new_status, $old_status, $post ) {
echo '<script>console.log("old_status: ' . $old_status . '")</script>';
echo '<script>console.log("new_status: ' . $new_status . '")</script>';
}
add_action('transition_post_status', 'on_all_status_transitions', 10, 3 );
这只会在 $new_status 为 auto-draft 时打印一次,然后当我将其保存为草稿或发布或将其移至垃圾箱时,没有任何反应。
Hook 2
function sync_on_product_save($product_Id){
$product = wc_get_product($product_Id);
echo '<script>console.log("Product Id: ' . $product_Id . '")</script>';
// Do what you need for 3rd party here...
}
add_action('woocommerce_new_product', 'sync_on_product_save', 10, 1);
这个钩子(Hook)永远不会被触发。
钩子(Hook) 3
产品更新 Hook 也是如此,从未触发。
add_action('woocommerce_update_product', 'sync_on_product_save', 10, 1);
根据我所做的所有阅读,它似乎非常明显并且应该可以正常工作。因此,如果有人能指出我可能做错了什么或我可能遗漏了什么,那就太好了。
另外,我知道我们可以在 WooCommerce 中创建 webhook,它可以将有效负载传送到我们可以指定的 URL。我想将此作为最后的选择。
非常感谢任何帮助。提前致谢。
注意:我在启用 https 的 wamp 上的本地主机上运行我的 Wordpress 实例。
最佳答案
当您更新产品时,您的 Hook 一直在触发。当您转储产品 ID 并终止 PHP 执行时,您可以看到产品 ID。
function sync_on_product_save($product_Id){
var_dump( $product_Id ); exit;
echo '<script>console.log("Product Id: ' . $product_Id . '")</script>';
// Do what you need for 3rd party here...
}
add_action('woocommerce_update_product', 'sync_on_product_save', 10, 1);
过程将是这样的:您点击更新产品按钮,它将带您到将添加脚本的 post.php,很快它将重定向到您的原始产品编辑 URL[ http://example.com/wp-admin/post.php?post=xx&action=edit] .这将删除您添加的脚本,这就是您看不到脚本的原因。
谢谢
关于php - Wordpress/WooCommerce Hook 未触发?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56697264/
请帮助我理解范围运算符...和..之间的区别,作为Ruby中使用的“触发器”。这是PragmaticProgrammersguidetoRuby中的一个示例:a=(11..20).collect{|i|(i%4==0)..(i%3==0)?i:nil}返回:[nil,12,nil,nil,nil,16,17,18,nil,20]还有:a=(11..20).collect{|i|(i%4==0)...(i%3==0)?i:nil}返回:[nil,12,13,14,15,16,17,18,nil,20] 最佳答案 触发器(又名f/f)是
我正在学习Rails,并阅读了关于乐观锁的内容。我已将类型为integer的lock_version列添加到我的articles表中。但现在每当我第一次尝试更新记录时,我都会收到StaleObjectError异常。这是我的迁移:classAddLockVersionToArticle当我尝试通过Rails控制台更新文章时:article=Article.first=>#我这样做:article.title="newtitle"article.save我明白了:(0.3ms)begintransaction(0.3ms)UPDATE"articles"SET"title"='dwdwd
我有一个rubyonrails应用程序。我按照facebook的说明添加了一个像素。但是,要跟踪转化,Facebook要求您将页面置于达到预期结果时出现的转化中。即,如果我想显示客户已注册,我会将您注册后转到的页面作为成功对象进行跟踪。我的问题是,当客户注册时,在我的应用程序中没有登陆页面。该应用程序将用户带回主页。它在主页上显示了一条消息,所以我想看看是否有一种方法可以跟踪来自Controller操作而不是实际页面的转化。我需要计数的Action没有页面,它们是ControllerAction。是否有任何人都知道的关于如何执行此操作的gem、文档或最佳实践?这是进入布局文件的像素
我有一个super简单的脚本,它几乎包含了FayeWebSocketGitHub页面上用于处理关闭连接的内容:ws=Faye::WebSocket::Client.new(url,nil,:headers=>headers)ws.on:opendo|event|p[:open]#sendpingcommand#sendtestcommand#ws.send({command:'test'}.to_json)endws.on:messagedo|event|#hereistheentrypointfordatacomingfromtheserver.pJSON.parse(event.d
我想写一点“Deprecate-It”库并经常使用“method_added”回调。但是现在我注意到在包含模块时不会触发此回调。是否有任何回调或变通方法,以便在某些内容包含到自身时通知类“Foobar”?用于演示的小Demo:#IncludingModulswon'ttriggermethod_addedcallbackmoduleInvisibleMethoddefinvisible"Youwon'tgetacallbackfromme"endendclassFoobardefself.method_added(m)puts"InstanceMethod:'#{m}'addedto'
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭9年前。我来自C、php和bash背景,很容易学习,因为它们都有相同的C结构,我可以将其与我已经知道的联系起来。然后2年前我学了Python并且学得很好,Python对我来说比Ruby更容易学。然后从去年开始,我一直在尝试学习Ruby,然后是Rails,我承认,直到现在我还是学不会,讽刺的是那些打着简单易学的烙印,但是对于我这样一个老练的程序员来说,我只是无法将它
我看到有关未找到文件min.map的错误消息:GETjQuery'sjquery-1.10.2.min.mapistriggeringa404(NotFound)截图这是从哪里来的? 最佳答案 如果ChromeDevTools报告.map文件的404(可能是jquery-1.10.2.min.map、jquery.min.map或jquery-2.0.3.min.map,但任何事情都可能发生)首先要知道的是,这仅在使用DevTools时才会请求。您的用户不会遇到此404。现在您可以修复此问题或禁用sourcemap功能。修复:获取文
以下代码使用了触发器运算符。(1..10).each{|x|print"#{x},"ifx==3..x==5}为什么结果是3,4,5?我觉得应该是3,4。如教程中所述,此表达式在x==3时为真,并一直为真,直到x==5。如果“5”的计算结果为false,如何打印它?谁能为我澄清一下? 最佳答案 来自“TheRubyProgrammingLanguage”的重要链接是:4.6.9.1Booleanflip-flopsWhenthe..and...operatorsareusedinaconditional,suchasanifstat
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭10年前。我使用PHP的时间太长了,对它感到厌倦了。我也想学习一门新语言。我一直在使用Ruby并且喜欢它。我必须在Rails和Sinatra之间做出选择,那么您会推荐哪一个?Sinatra真的不能用来构建复杂的应用程序,它只能用于简单的应用程序吗?
我很确定Ruby有这些(等同于__call、__get和__set),否则find_by将如何在Rails中工作?也许有人可以举一个简单的例子来说明如何定义与find_by相同的方法?谢谢 最佳答案 简而言之你可以映射__调用带有参数的method_missing调用__设置为方法名称以'='结尾的method_missing调用__获取不带任何参数的method_missing调用__调用PHPclassMethodTest{publicfunction__call($name,$arguments){echo"Callingob