当前位置: 首页 > 知识库问答 >
问题:

在更新自定义字段之前已保存\u post\u更新后触发,在更新自定义字段之后触发什么函数?wordpress

尹小云
2023-03-14

我有一个问题,我想使用另一个自定义post字段更新自定义用户元数据字段。它必须在包括自定义字段在内的整个帖子保存/更新后发生。但是我找到的所有调用:更新基本post数据,然后调用操作,然后更新自定义字段。

saved_post

有人知道在保存自定义post数据后运行的操作挂钩吗?或者如何在自定义post数据后使save_post或post_更新为fire?

    function zhu_li_do_the_thing( $post_id ) {

//获取帖子数据,提取作者ID和帖子类型

$post = get_post( $post_id );
$post_type = $post->post_type;
$userid = $post->post_author;

//如果您需要我的自定义帖子类型,则获取我想要的自定义字段值。

if( 'my_custom_post_type' == $post_type ){
  $post_custom_fields = get_post_custom($post_id);
  $my_custom_field = $custom_fields['im_a_field'];
  foreach($im_a_field as $key ){
        $my_value = $key;
        }

//如果该值以“”或“-”开头,请根据自定义元数据对其进行计算,如果为null,则忽略它,如果为其他值,则使元数据=该值。

  if(substr($my_value, 0,1)=='+' || substr($my_value, 0,1)=='-'){
        $my_int = intval($my_value);
        $author_int = intval(get_user_meta($userid, 'the_objective, true)); 
        $result = ($author_int + $str);
        update_user_meta( $userid, 'the_objective', $result );

  }elseif($my_value == null ){
        return;
  }else{ 
        update_user_meta( $userid, 'the_objective', $my_value )
  }}};

add_action( 'save_post, 'zhu_li_do_the_thing' );

共有1个答案

淳于功
2023-03-14

您应该使用pre\u post\u update检查之前的帖子元,并使用post\u updated检查更新后的帖子元。

下面是检查Woocomece产品库存状态的类的代码片段。

function __construct()
{   
    add_action( 'post_updated', array( $this, 'post_updated' ), 1, 1 );
    add_action( 'pre_post_update', array( $this, 'pre_post_update' ), 1, 1 );
}

function pre_post_update( $post_ID )
{       
    global $post_type;

    if( $post_type == 'product' )
        define( 'stock_status_previous', get_post_meta( $post_ID, '_stock_status', 1 ) );
}

function post_updated( $post_ID )
{
    if( defined( 'stock_status_previous' ) )
    {
        $stock_status = get_post_meta( $post_ID, '_stock_status', 1 );

        if( $stock_status == stock_status_check )
            return;

        // post meta is different - sp do something

}
 类似资料:
  • 我正在尝试使用Ajax更新Wordpress中的自定义域(例如,使用表单文本输入,通过单击按钮替换自定义域文本)。我正在使用高级自定义字段插件,并遵循我在这里找到的示例,但这似乎不起作用:https://support.advancedcustomfields.com/forums/topic/use-update_field-with-ajax/ 我所做的是: (1)将html表单添加到我的si

  • 我想寻求一些帮助。我是APEX的新手,我面临的问题是APEX触发器似乎是一个解决方案。我需要Salesforce中的一个触发器,该触发器将使用Staff对象(自定义对象)的值from Holidays Remaining字段更新位于Users对象(standard对象)中的字段。换言之,应将员工剩余假期中填充的内容复制到名为“用户剩余假期”的字段中。谁能帮我一下吗?

  • 长话短说,我需要在我的标准联系人中更新一个自定义字段,该字段在更新一个不同的、不相关的自定义对象后触发。我曾试图编写一个触发器,将字段值从自定义对象传递给联系人,但我不断收到各种错误,其中最近的一个错误让我感到困惑。最终目标是从Passing\u Field\uu c更新Passing\uu c。 我收到了一个意外的标记:“(”for(Contact C:行)上的错误。它太简单了,我想不出来。 下

  • 问题内容: 我希望该列始终为/ 。我正在使用AFTER UPDATE触发器来完成此操作。因此,如果要向该表中添加100次点击,我希望EPC自动更新。 我正在尝试: 并得到此错误: 我也尝试使用OLD,但也出现了错误。我可以在此之前做,但是如果我添加了100次点击,它将使用之前的#次点击作为触发条件(对吗?) 我应该怎么做才能做到这一点? 编辑-将在此运行查询的示例: 问题答案: 您无法 在 更新

  • 问题内容: 在同一张表上更新后,如何在触发器中更新表的列? 这是触发条件: 现在当我像这样更新表时 这不起作用,因为我得到以下信息: 那么我到底该如何工作呢? 问题答案: 如果将触发器更改为而不是,可以这样操作:

  • 问题内容: 我有一个绑定到我的EventTracker bean的JTable,本质上是一个列表的包装,我将仅将其用作附加/清除(即,简单的日志)。问题是,当我将条目添加到列表中并尝试触发事件时,我看不到任何更改。我正在使用NetBeans IDE。 EventTracker bean被添加到视图中并实例化为eventTracker1。从那里,我右键单击表格,然后选择“表格内容…”。表模型已绑定到

  • 我正在尝试用Angular构建一个简单的计算器,如果我想的话,我可以覆盖总数。我有这部分的工作,但当我回去输入一个数字在一个或两个领域的总数没有在该领域的更新。 这是我的jsfiddlehttp://jsfiddle.net/YUza7/2/ 形式 javascript

  • 问题内容: 仅在真正更改数据的情况下,才有可能使用“更新后”触发器。我知道“新旧”。但是使用它们时,我只能比较列。例如“ NEW.count <> OLD.count”。 但我想要类似的东西:如果“ NEW <> OLD”,则运行触发器 一个例子: 关键是,有一个更新,但是 什么都没有改变 。但是无论如何,触发器都在运行。恕我直言,应该有一个没有的方法。 我知道我可以使用 如果现在b <> OLD