wordpress add_action(updated_postmeta)以运行更新后元数据->循环

gudnpqoy  于 2022-12-03  发布在  WordPress
关注(0)|答案(1)|浏览(150)

我有一个add_action,它在postmeta表发生变化时触发,当触发时,我需要用函数update_post_meta()更新post_meta表。
如您所料,这会导致循环,不断更新post meta表。
有人知道如何在这种情况下打破循环,只运行一次吗?

function seoHomepageTitle() {
  $page = get_page_by_title("Homepage");
  $meta_key = "_yoast_wpseo_title";
  $meta_value = jet_engine()->listings->data->get_option( 'pwp-options::seo-title-homepage' );

  isset($page, $meta_value) ? update_post_meta($page->ID , $meta_key, $meta_value) : false;

  return;
}

add_action('updated_postmeta', 'seoHomepageTitle');
h4cxqtbf

h4cxqtbf1#

您可以在更新之前删除挂钩,然后将其添加回来,如下所示

function seoHomepageTitle() {
  $page = get_page_by_title("Homepage");
  $meta_key = "_yoast_wpseo_title";
  $meta_value = jet_engine()->listings->data->get_option( 'pwp-options::seo-title-homepage' );
  
  remove_action('updated_postmeta', 'seoHomepageTitle');
 
  isset($page, $meta_value) ? update_post_meta($page->ID , $meta_key, $meta_value) : false;

  //add_action('updated_postmeta', 'seoHomepageTitle');
  return;
}

add_action('updated_postmeta', 'seoHomepageTitle');

相关问题