为什么这个$wpdb查询循环5次?

时间:2015-08-01 作者:Jonirish

我只想为此查询返回一个值,它位于functions.php 文件这样做的目的是返回一个我需要的值post_meta 已更新。返回相同(正确)值的次数为5次。。。我只希望该值返回一次。

add_action( \'added_post_meta\', 
    function ( $mid, $object_id, $meta_key, $_meta_value) {
        global $wpdb;
        $table_name = $wpdb->prefix . \'postmeta\';
        $results = $wpdb->get_var(
            "SELECT meta_value FROM " . $table_name . 
            " WHERE meta_key = \'data19\' AND post_id = " .$object_id. " " );
    }, 
    10, 4 );
你知道如何只返回一个值吗?我尝试过:

添加Group by 最后添加OBJECT_K 最后,使用SELECT DISTINCTMAX 在每个值之前使用FIRST 在每个值之前使用wp_reset_query()

1 个回复
最合适的回答,由SO网友:Matt van Andel 整理而成

最可能的原因是挂钩可能运行了多次(例如,每个元字段一次)。您可能需要像这样限定/筛选您的函数…

add_action( \'added_post_meta\', function ( $mid, $object_id, $meta_key, $_meta_value) {
  global $wpdb;

  if ( $meta_key != \'data19\' ) {
    return;
  }

  $table_name = $wpdb->prefix . \'postmeta\';
  $results = $wpdb->get_var(
    "SELECT meta_value FROM " . $table_name . 
    " WHERE meta_key = \'data19\' AND post_id = " .$object_id. " " );

}, 10, 4 );

结束

相关推荐

是否必须在定制表中使用$wpdb->前缀

如果这个问题很琐碎,很抱歉。我刚刚开始在WordPress中开发插件。在所有教程中,我都发现了这一点:在创建自定义表时,$wpdb->prefix 已使用。示例:$table_name = $wpdb->prefix . \"liveshoutbox\"; 我的问题:是否必须使用$wpdb->prefix? 如果不对自定义表使用前缀,会发生什么情况?