继承发布状态时的添加操作(_A)

时间:2013-02-11 作者:Barry Jarvis

我正在尝试使用add\\u action()钩子来运行自定义函数,但正在努力处理post状态。

我最初尝试使用:

add_action(\'pending_to_publish_portfolio\', \'my_function\');
(公文包是我的自定义帖子类型)。

这不起作用,所以我在官方Wordpress支持论坛上发布了一些帮助。我获得了以下代码以获得正确的转换状态\'

function bj_test($new, $old) {
print_r($old . \'_to_\' . $new);
echo \'<br>\';
print_r($old . \'_\' . $new);
die();
}
add_action(\'transition_post_status\', \'bj_test\', 10, 2);
这给了我2倍的状态:

new\\u to\\u inherit new\\u inherit

我已经查看了继承状态,而法典只是说明它用于后期修订。这是有道理的,因为我正在从一个待处理的帖子更改为一个已发布的帖子。

我的问题是,我现在不知道如何使用这些信息。我所要做的就是在我将帖子从挂起更改为发布时触发一个事件。根据我所能找到的所有在线教程,它应该和我第一次尝试(张贴在上面)一样简单,但那根本不起作用。最近是否在处理后期转换的方式上发生了变化,因此所有这些教程都过时了?

对于那些知道自己在做什么的人来说,这可能真的很简单,但我对WP非常陌生,现在已经没有选择了:(

感谢您的帮助。

2 个回复
SO网友:MattyRob

我在开发的一些代码中遇到了同样的问题。

但在您的情况下,树是一个更好的钩子,因为您只想钩住正在移动到“发布”的帖子

您需要将函数挂接到所有可能的{status}\\u中,以便发布如下挂接:

add_action(\'new_to_publish\', \'my_function\');
add_action(\'draft_to_publish\', \'my_function\');
add_action(\'auto-draft_to_publish\', \'my_function\');
add_action(\'pending_to_publish\', \'my_function\');
add_action(\'future_to_publish\', \'my_function\');
add_action(\'private_to_publish\', \'my_function\');
您发现,即使传递初始雕像,也会使用foreach循环,使用数组中钩子名称的第一部分。

SO网友:s_ha_dum

你的代码就快到了。基本版本为:

function bj_test($new, $old) {
  if (\'pending_to_publish\' == $old . \'_to_\' . $new) {
    // run your code
  }
}
add_action(\'transition_post_status\', \'bj_test\', 10, 2);
不过,这将适用于任何帖子类型,而且看起来您只需要一种类型。没有pending_to_publish_{cpt} hook(据我所知),但有一个{$new_status}_{$post->post_type} 钩子,但它将在每次保存帖子时运行,而不仅仅是在转换更改时。也不完全正确。

但是

function run_cpt_action($a,$b) {
  // run your code
  var_dump($a,$b); die; // debugging only
}

function bj_test($new, $old) {
  if (\'pending_to_publish\' == $old . \'_to_\' . $new) {
    add_action(\'publish_book_type\',\'run_cpt_action\',1,2);
  }
}
add_action(\'transition_post_status\', \'bj_test\', 10, 2);
。。。由于过滤器的启动顺序,您可以将两者结合起来,使其正常工作。

结束