使WordPress成为核心

变更集57841


忽略:
时间戳:
2024年3月15日下午12:10:49(2个月(之前)
作者:
瑞士风格
消息:

交互API:如果是空数组,则不打印状态。

这会修剪为空数组的存储和配置,因为存储应该是JSON对象。
通过不打印空配置,可以将较少冗余的数据序列化到HTML中。

Props jonsurerl、luisherranz、darerodz、gziolo、swissspidy。
修复#60761

位置:
大旅行箱
文件夹:
2已编辑

图例:

未修改
补充
远离的
  • trunk/src/wp-includes/interactivity-api/class-wp-interactivity-api.php

    57835兰特 57841兰特  
    141141     */
    142142公共函数print_client_interactivity_data(){
    143 $store=数组();
    144 $has_state=!空($this->state_data);
    145 $has_config=!空($this->config_data);
    146 
    147 if($has_state||$has_config){
    148 if($has_config){
    149 $store['config']=$this->config_data;
    150             }
    151 if($has_state){
    152 $store['state']=$this->state_data;
    153             }
     143if(空($this->state_data)&&empty($this->config_data)){
     144回报;
     145        }
     146
     147$interactivity_data=array();
     148
     149$config=数组();
     150foreach($this->config_data作为$key=>$value){
     151if(!空($value)){
     152$config[$key]=$value;
     153            }
     154        }
     155if(!空($config)){
     156$interactivity_data['config']=$config;
     157        }
     158
     159$state=数组();
     160foreach($this->state_data作为$key=>$value){
     161if(!空($value)){
     162$state[$key]=$value;
     163            }
     164        }
     165if(!空($state)){
     166$interactivity_data['state']=$状态;
     167        }
     168
     169if(!空($interactivity_data)){
    154170wp_print_inline_script_tag(打印行脚本标记)(
    155171wp_json编码(
    156 $商店,
     172                    $交互数据,
    157173JSON_HEX_TAG | JSON_EX_AMP
    158174                ),
  • trunk/tests/phpunit/tests/interactivity-api/wpInteractivityAPI.php

    57649兰特 57841兰特  
    237237    }
    238238
    239 
     239    /**
     240*测试从打印数据中删除空状态对象。
     241     *
     242*@车票60761
     243     *
     244*@封面::print_client_interactivity_data
     245     */
     246公共函数test_state_not_printed_when_empty_array(){
     247$this->interactivity->state('pluginWithEmptyState_prune',array());
     248$this->interactivity->state(“pluginWithState_include”,数组(“value”=>“excellent”);
     249$printed_script=get_echo(数组($this->interactivity,'print_client_interactivity_data');
     250$预期值=<<<“SCRIPT_TAG”
     251<script type=“application/json”id=“wp-interactivity-data”>
     252{“state”:{“pluginWithState_include”:}“value”:“excellent”}}
     253</script>
     254
     255脚本TAG;
     256
     257$this->assertSame(预期为$,$printed_script);
     258    }
     259
     260    /**
     261*测试不打印仅由空状态对象组成的数据。
     262     *
     263*@票60761
     264     *
     265*@封面::print_client_interactivity_data
     266     */
     267公共函数test_state_not_printed_when_only_empty_arrays(){
     268$this->interactivity->state('pluginWithEmptyState_prune',array());
     269$printed_script=get_echo(数组($this->interactivity,'print_client_interactivity_data');
     270$this->assertSame('',$printed_script);
     271    }
     272
     273    /**
     274*正确打印嵌套空状态对象的测试。
     275     *
     276*@票60761
     277     *
     278*@封面::print_client_interactivity_data
     279     */
     280公共函数test_state_printed_correctly_with_nested_empty_array(){
     281$this->interactivity->state(“myPlugin”,数组(“emptyArray”=>array()));
     282$printed_script=get_echo(数组($this->interactivity,'print_client_interactivity_data');
     283$预期值=<<<“SCRIPT_TAG”
     284<script type=“application/json”id=“wp交互数据”>
     285{“state”(状态):{“myPlugin”(我的插件):{“emptyArray”(空数组):[]}}}
     286</script>
     287
     288脚本TAG;
     289
     290$this->assertSame(预期为$,$printed_script);
     291    }
     292
     293    /**
     294*测试从打印数据中删除空配置对象。
     295     *
     296*@票60761
     297     *
     298*@封面::print_client_interactivity_data
     299     */
     300公共函数test_config_not_printed_when_empty_array(){
     301$this->interactivity->config('pluginWithEmptyConfig_prune',array());
     302$this->interactivity->config(“pluginWithConfig_include”,数组(“value”=>“excellent”);
     303$printed_script=get_echo(数组($this->interactivity,'print_client_interactivity_data');
     304$预期值=<<<“SCRIPT_TAG”
     305<script type=“application/json”id=“wp-interactivity-data”>
     306{“配置”:{“pluginWithConfig_include”:{“值”:“极好”}}}
     307</script>
     308
     309脚本TAG;
     310
     311$this->assertSame(预期为$,$printed_script);
     312    }
     313
     314    /**
     315*测试不打印仅由空配置对象组成的数据。
     316     *
     317*@票60761
     318     *
     319*@封面::print_client_interactivity_data
     320     */
     321公共函数test_config_not_printed_when_only_empty_arrays(){
     322$this->interactivity->config('pluginWithEmptyConfig_prune',array());
     323$printed_script=get_echo(数组($this->interactivity,'print_client_interactivity_data');
     324$this->assertSame('',$printed_script);
     325    }
     326
     327    /**
     328*测试嵌套的空配置对象是否正确打印。
     329     *
     330*@票60761
     331     *
     332*@封面::print_client_interactivity_data
     333     */
     334公共函数test_config_printed_correctly_with_nested_empty_array(){
     335$this->interactivity->config('myPlugin',array('emptyArray'=>array()));
     336$printed_script=get_echo(数组($this->interactivity,'print_client_interactivity_data');
     337$预期值=<<<“SCRIPT_TAG”
     338<script type=“application/json”id=“wp-interactivity-data”>
     339{“config”:{“myPlugin”:}“emptyArray”:[]}}
     340</script>
     341
     342脚本TAG;
     343
     344$this->assertSame(预期为$,$printed_script);
     345    }
    240346
    241347    /**
注:请参见TracChangeset(跟踪变更集)获取有关使用变更集查看器的帮助。