我希望有人能帮助我。更新页面时,我需要删除帖子/页面上所有短代码的临时代码。因此,页面更新应该只删除位于该页面上的短代码的瞬态。如果这是不可能的,那么在任何页面更新中删除所有短代码瞬态将有所帮助。
我试着用save_post
但什么都没发生,所以我一定是做错了什么。
此外,问题是我正在基于post ID和静态变量的增量生成一个短代码ID。
因此,只有当我调用该方法来删除shortcode-template.php
我可以访问当前的页面ID,然后我可以删除与页面ID/短代码ID组合相关的瞬态。但是,每次加载短代码时,瞬态都会被删除。如果我不调用delete\\u transient函数,它似乎没有连接到save_post
行动,因为什么都没发生。
我想这是因为当前页面ID不能在类中提取,而只能在页面的某个位置使用。但我不知道该怎么解决这个问题。
这是我的班级:
class MainClass {
private static $shortcode_increment = 0;
private function __construct() {
add_action( \'save_post\', array( $this, \'update_page_delete_transient\') );
}
public static function increment_id() {
global $post;
self::$shortcode_increment++;
return \'shortcode_\' . $post->ID . "_" . self::$shortcode_increment;
}
// delete the shortcode cache on page update
public function update_page_delete_transient() {
delete_transient( \'weather_\'.self::increment_id() );
}
}
非常感谢您的帮助。谢谢
更新我不确定操作应该如何工作,据我所知,添加到操作中的函数应该在该操作发生时激活,所以不需要调用该函数?还是有?
在中实例化类后,是否会自动激活添加到操作的函数shortcode-template.php
例如,因为动作本身在构造中?或者我需要打电话给delete_transient
短代码模板中的函数。php以使其正常工作?但当我这样做时,它只是在每次加载小部件时运行,而不是在保存帖子/页面上运行。
更新2,因此,如果我从增量ID函数中删除post ID,我可以很好地解决上面更新1中的问题。delete_transient
当我创建一个对象实例时,函数被激活,并在页面/后期保存时调用。
现在剩下的问题是如何将唯一的短代码ID传递给delete_transient
函数,如果ID仅在shortcode-template.php
创建新的短代码时。或者,如果我能够以某种方式将页面ID和短代码ID传递给delete_transient
函数,因此我可以在更新时删除特定短代码的特定瞬态。
是否有方法从shortcode-template.php
返回到Object方法?