将功能从functions.php移动到插件

时间:2018-11-13 16:01:12

标签: php wordpress plugins

我可能正在做一些愚蠢的事情。

但是我有以下工作代码,(这是代码的一小部分(但正在工作)),如果我在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仅在我的插件文件中不运行。我真的有0线索是什么原因造成的:/

编辑2:

基本上,该功能似乎没有问题,因为如果我更改加载时的位置(在fucntion.php中),它将正常工作。

  1. 问题是add_action保存钩子(可能是因为)
  2. 插件是实时/有效/有效的(已通过var dumbs测试)
  3. 如果add_action在functions.php中,而在插件文件中,则该函数也起作用。
    1. 没有其他插件处于活动状态,默认为二十七个主题

这是否意味着它与事物加载的顺序有关? (还是我忽略了一些愚蠢的事情?)

编辑3,我发现它/使其正常工作 如果我将save_post行更改为:

  

add_action('save_post','update_booklink_field',50,50);

有效

1 个答案:

答案 0 :(得分:0)

也许这可以解决问题:

<?php
/**
* Plugin Name: aaautofill
*/

function update_booklink_field( ) {

global $post;

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' );

?>
相关问题