【发布时间】:2018-11-13 16:01:11
【问题描述】:
我可能在做一些愚蠢的事情。
但我有以下工作代码,(这是代码的一小部分(但工作))如果我在我的 functions.php 中有此代码,它工作正常,但是当我将它添加到自定义插件中时,它确实不是
function update_booklink_field( $post_id ) {
if( ! ( wp_is_post_revision( $post_id) || wp_is_post_autosave( $post_id ) ) ) {
update_post_meta( $post_id, 'prijstest', 'testvalue' );
}
}
add_action( 'save_post', 'update_booklink_field' );
这是我在插件中的代码,我有什么明显的遗漏吗?或者我需要采取额外的步骤来触发插件中的功能吗?
<?php
/**
* Plugin Name: aaautofill
*/
function update_booklink_field( $post_id ) {
if( ! ( wp_is_post_revision( $post_id) || wp_is_post_autosave( $post_id ) ) ) {
update_post_meta( $post_id, 'prijstest', 'testvalue' );
}
}
add_action( 'save_post', 'update_booklink_field' );
?>
编辑:
到目前为止我发现了什么: 如果我搬家
add_action('save_post', 'update_booklink_field');
到函数文件,然后它就可以工作了。 该插件已激活,但 save_post 在我的插件文件中时不会运行。我真的不知道是什么原因造成的:/
编辑 2:
基本上该函数似乎没有问题,因为如果我更改其加载时的位置(在 fucntion.php 中)它可以正常工作。
- 问题是 add_action 保存挂钩(可能)因为
- 插件是 live/active/works(用 vardumbs 测试)
- 如果 add_action 在functions.php 中与在插件文件中时,该函数也可以工作。
- 没有其他插件上线,默认二十七,主题
这是否意味着它与加载内容的顺序有关? (或者我忽略了一些愚蠢的事情?)
编辑 3,我找到它/让它工作 如果我将 save_post 行更改为:
add_action('save_post', 'update_booklink_field', 50, 50);
有效
【问题讨论】:
-
您遇到什么错误?它是如何“不工作”的?
-
我没有收到错误,它只是不更新字段(如果该代码在 functions.php 文件中,它会正常更新)
-
你确定你激活了插件吗?如果您只是在函数外部执行
var_dump('testing');之类的测试 var_dump 会发生什么?它会出现在前端吗? -
是的,插件已激活,如果我添加“var_dump('testing');”在该功能之外,我在前端看到“string(7)”“testing”
-
那很好。也就是说,我不知道问题是什么,但也许 $post_id 变量不起作用。也许尝试定义它
$post_id = get_the_ID();