get_state(); if (!empty($state['first_use'])) { return; // Already recorded — nothing to do on every later save. } if (!$this->post_uses_marqueex($post)) { return; } $state['first_use'] = time(); $this->save_state($state); } /** * Whether a post contains a MarqueeX block or Elementor widget. * * @param \WP_Post $post * @return bool */ private function post_uses_marqueex($post) { if (!is_object($post) || empty($post->post_content)) { // Elementor keeps its layout in post meta rather than post_content. return $this->elementor_data_uses_marqueex($post); } if (false !== strpos($post->post_content, '