从页面/更新后的快捷码中删除WordPress暂态

时间:2017-06-25 作者:Arakis

我希望有人能帮助我。更新页面时,我需要删除帖子/页面上所有短代码的临时代码。因此,页面更新应该只删除位于该页面上的短代码的瞬态。如果这是不可能的,那么在任何页面更新中删除所有短代码瞬态将有所帮助。

我试着用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方法?

1 个回复
SO网友:Igor Sorish

如果将所有短代码数据保存在一个变量中,则可以轻松重置。

短代码(伪代码)中的某处示例:

$page_cache = get_transient("page_{$page_id}");
if ( empty($page_cache ) ){
  global $shortcode_index;
  $page_cache[$shortcode_index] = **some data that cached**;
  set_transient( "page_{$page_id}", $page_cache, **some time** );
  $shortcode_index++;
  ****
}
然后,您可以在后期保存时仅通过page\\u id将其删除

 delete_transient( "page_{page_id}" );

结束

相关推荐

我打破了我的分页,所有页面上的帖子都一样(index.php)

我的索引上有两个循环。php页面中,第一个循环仅返回两条特色内容区域的粘性帖子。第二个自定义循环获取其他帖子,但不包括粘性帖子,这就是循环; <?php $the_query = new WP_Query( array( \'post__not_in\' => get_option( \'sticky_posts\' ), ) ); if ( $the_query->have_posts() ) : while ( $th