web-dev-qa-db-ja.com

配列のカスタマイザ設定

こんにちは。

私は、フロントページに抜粋を表示するページをユーザーが選択できるように、テーマカスタマイザを使用しています。設定名に配列を使用してこれを行いました。

$wp_customize->add_setting( 'learn_more[0]' , array(
    'default'     => 1
) );
$wp_customize->add_setting( 'learn_more[1]' , array(
    'default'     => 1
) );
$wp_customize->add_setting( 'learn_more[2]' , array(
    'default'     => 1
) );

それからそれぞれのコントロールを作成します。

私のfront-page.phpテンプレートでは、get_theme_mod('learn__more')を使用してカスタムループで検索するページの配列を提供します。

それは完璧に機能します。を除いて...

必要なアイテムの数を4から3に減らしました。しかし、4番目のアイテムはデータベースに格納されるため、get_theme_modを使用するたびに4つのアイテムの配列が返されます。その結果、私のfront-page.phpのループは4つの項目を示しています。

これを解決する方法はありますか?データベースの4番目の項目を削除する方法カスタマイザの設定で番号を調整したいと思う将来の立場を見ることができますが、それは私が項目の数を変えるたびにこの問題を引き起こす原因になります。

誰かが巧妙なアイデアを持っていますか?

1
Jamie

get_theme_mod()関数は以下のように動作します。

  • それはボンネットの下でget_theme_mods()関数を取得します。
  • これは以下のデータを返します

    $theme_slug = get_option( 'stylesheet' );
    get_option( "theme_mods_{$theme_slug}" );
    

そのため、アップグレードする場合は、そのバージョンのプラグインまたはテーマに固有のアップグレード関数を作成します。このアップグレード関数は、次のいずれかを使用します。ここで、名前はget_option( 'stylesheet' );を介して再度取得されます。

  • delete_option( "mods_{$theme_name}" );
  • update_option( "theme_mods_{$theme_slug}", $mods );
0
kaiser