【wordpress】$wpdbのinsertで同じ値がデータベースに2回登録される不思議

管理画面で、送信ボタンのみの独自ページを作成しました。
送信ボタンを押すと、?type=writeのクエリパラメータで独自ページをリロードし、
データベースに値を登録します。

$sql = $wpdb->prepare("INSERT INTO $wpdb->vote_result (id, name) VALUES(%d , %s)" , 1 , "aonori");
$result = $wpdb->query( $sql );

結果、データベースに同じ値が2回登録されました。
どうして。。。

データベースに1回だけ登録されればいい

コードはデータベースに1回、値を登録する処理です。
2回も登録するつもりはないのです!
いったいどうして、2回も登録してくれるのでしょうか?
chromeのdeveloper toolでnetworkパネルを確認しました。

ん? ページが2回読み込まれている?。。。

2回読み込まれているのを確認した

管理画面で全部のページが2回読み込まれていました。
上記画像の例だとedit.phpが2回。Typeがdocumentとstylesheet。
1回でいいんですよ。documentの方を1回読み込んでくれればいいんです。

データベースに2回同じ値が登録される原因は、ページが2回読み込まれているからでした。

cssのバージョン表記を消す記述の変更

ページが2回読み込まれている現象は確認しました。
解消する方法は?
ヒントはtypeがstylesheet。
css関連でカスタマイズしている心当たりがありました。
cssに追記されるwordpressのバージョン?ver=バージョンの削除
をしてました。

function remove_src_ver( $src ) {
    return remove_query_arg( 'ver', $src );
}
add_filter( 'script_loader_src', 'remove_src_ver' );
add_filter( 'style_loader_src', 'remove_src_ver' );

jsとcssの読み込み記述に?ver=wordpressのバージョンが追記されるので削除するfilter処理をしてました。
このcssの方の記述を、

function remove_src_ver_css( $src ) {
    if( strpos( $src, '?ver=' ) )
        $src = remove_query_arg( 'ver', $src );
    return $src;
}
add_filter( 'style_loader_src', 'remove_src_ver_css');

このように変えたら、ページが2回読み込まれる現象が解消されました。

そして、データベースに2回、同じ値が登録される現象も解消されたのでした。

コメント

タイトルとURLをコピーしました