仅当更新选项时才进行数据库查询

时间:2012-12-18 作者:Rob Myrick

下面是一个DB查询,我使用它来检索值并将它们放在WP\\U List\\U表中。当前正在添加值add_option, 然后将这些值转换为一个名为wp_testimonials. 我不知道我为什么这样做,但它是有效的!

所以现在我需要创建一个条件,说明“如果用户当前正在更新选项,那么在更新选项后更新表,否则什么都不要做。”

然而,我不知道如何陈述这种情况。我的显示表位于不同的文件中,而不是更新选项的文件中。

下面是数据库查询,当前每次访问页面时都会更新,需要更改。

      $options = get_option(\'testimonials_settings\');  
          if ( isset ($options)) {  
          global $wpdb;
          $table_name = $wpdb->prefix . "testimonials";
          $sql = "CREATE TABLE $table_name (
          id mediumint(9) NOT NULL AUTO_INCREMENT,
          name tinytext NOT NULL,
          company_name text NOT NULL,
          company_url text NOT NULL,
          testimonials_quote text NOT NULL,
          UNIQUE KEY id (id)
      );";
          require_once(ABSPATH . \'wp-admin/includes/upgrade.php\');
          dbDelta($sql);

         $name = $options[\'testimonials_name\'];
         $company_name = $options[\'testimonials_website_name\'];
         $company_url = $options[\'testimonials_website_url\'];
         $testimonials_quote = $options[\'testimonials_quote\'];
         $rows_affected = $wpdb->insert( $table_name, array( \'name\' => $name, \'company_name\' => $company_name, \'company_url\' => $company_url, \'testimonials_quote\' => $testimonials_quote ) );

      }

1 个回复
最合适的回答,由SO网友:Mridul Aggarwal 整理而成

功能update_option 包括可以使用的动作挂钩。

使用update_option_{$option_key} 如图所示:

function my_func($option, $value) {
  //this is called only when that particular option is updated
  //$option has the option key & $value has the value array
}
add_action(\'update_option_testimonials_settings\', \'my_func\', 10, 2);

结束