当该页面更新时,我需要删除位于帖子/页面上的所有短代码的瞬态。因此,页面更新应删除仅针对该页面上的短代码的瞬态。如果这不可能,那么在任何页面更新中删除所有短代码瞬变都会有所帮助。
我尝试使用 save_post 操作,但没有任何反应,所以我一定做错了。
此外,问题在于我根据帖子ID和静态变量的增量生成短代码ID。
因此,只有当我在shortcode-template.php中调用方法删除瞬态时,我才能访问当前页面的ID,然后我可以删除与页面ID /短代码ID组合相关的瞬态。但是每次加载短代码时都会删除瞬态。如果我没有调用delete_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中实例化类之后,是否会将函数添加到动作中自动激活,因为动作本身在构造中? 或者我需要调用shortcode-template.php中的delete_transient函数才能使其正常工作?但是当我这样做时,它只会在每次加载窗口小部件时运行,而不是在保存帖子/页面上运行。
更新2:因此,如果我从增量ID功能中删除帖子ID,我可能会严重解决上述更新1中的问题。当我创建对象的实例并且在页面/帖子保存时调用它时,激活Delete_transient函数。现在剩下的问题是如何在创建新的短代码时仅在shortcode-template.php中增加ID时,如何将唯一的短代码ID传递给delete_transient函数。或者,如果我能以某种方式将Page ID和Shortcode ID以某种方式传递给Main Class中的delete_transient函数,那就更好了,所以我可以删除更新时特定短代码的特定瞬态。有没有办法将shortcode-template.php中的数据传递回Object方法?