ウィジェット付きのワードプレスプラグインを開発中です。現在、ウィジェットの更新機能は次のようになっています。
function update($new, $old){
$instance = $old;
//Update Values
$instance['element-one'] = $new['element-one'];
$instance['element-two'] = $new['element-two'];
$instance['element-three'] = $new['element-three'];
$instance['element-four'] = $new['element-four'];
//Return New Instance
return $instance;
これは想定どおりに機能します。しかし、私は要素の長いリストを持っており、コードをきれいにするために、次のような単純な関数でそれらを実現しようとしています。
function update($new, $old){
$instance = $old;
//Update Values
foreach($instance as $k => $v){
$instance[$k] = $new[$k];
}
//Return New Instance
return $instance;
これはうまくいかないようですが。この関数を使用すると、ウィジェットの値が更新されません。だから、それが私が望むように動作するかどうかをテストするために...私は正常に動作するサンプルスクリプトを書きました。スクリプトは次のとおりです。
$a = array(
'a' => '1',
'b' => '2',
'c' => '3'
);
$b = array(
'a' => 'A',
'b' => 'B',
'c' => 'C'
);
function swap_values($old, $new){
$result = $old;
foreach($result as $k => $v){
$result[$k] = $new[$k];
}
return $result;
}
$res = swap_values($a, $b);
var_dump($res);
このスクリプトは正常に機能しており、配列の値を交換しますが、何らかの理由でこれはワードプレスではうまく機能していないようです。
これに取り組んでいる間に私が気付いたもう一つの奇妙なことは
$instance
ウィジェットの配列にいくつかの要素が宣言されていてform function
、更新関数がそれらを正常に機能するよう$instance['old'] = $instance['new'];
に更新しているとします。また、プラグインをインストールしてアクティブ化した後、それらを使用するように更新機能を変更した場合、foreach loop
それらは正常に機能します。- しかし、その後、更新関数を変更してforeachループを使用するように変更した後、
$instance
配列に要素を追加すると、それらは更新されませんが、以前に宣言された要素は更新されます。 - また、別のワードプレスインストールで[foreachループを使用するように更新機能を更新した後]このプラグインをインストールしてアクティブ化すると、どの要素も更新されないようです。
私が見逃している非常にマイナーなものがあると確信しています。あなたからの助けや提案は大歓迎です。