web-dev-qa-db-ja.com

カスタマイザフィールド値をfunctions.php変数に

カスタマイザフィールドの値をfunctions.php変数に渡すことは可能ですか?

カスタムのWooCommerceタブに言語オプションを提供したいです。現在タブの見出しはfunctions.phpにハードコードされています。デフォルトのタブを削除した後、以下を追加します。

add_filter( 'woocommerce_product_tabs', 'downloads_tab' );
if ( ! function_exists ( 'downloads_tab' ) ) {
function downloads_tab( $tabs ) {
  // ensure ACF is available
  if ( !function_exists( 'have_rows' ) )
    return;

  if ( get_field('downloads') ) {
    $tabs['downloads_tab'] = array(
      'title'   => __( 'Downloads', 'woocommerce' ),
      'priority' => 60,
      'callback' => 'woo_downloads_tab_content'
    );
  }
  return $tabs;
}
}

Customizer.php(テーマはUnderStrapに基づいています)では、

// Product Downloads Tab Setting
$wp_customize->add_setting( 'product-downloads-tab', array( 'default' => '' ) );
$wp_customize->add_control( new WP_Customize_Control( $wp_customize, 'product-downloads-tab', array( 'label' => __( 'Product "Downloads" tab text', 'theme-name' ), 'section' => 'language-options', 'settings' => 'product-downloads-tab', ) ) );

Functions.phpでタブのタイトルをハードコーディングするのではなく、ここに入力した値をそのまま使用できますか?

私の回避策は子テーマのfunctions.phpの中の関数をオーバーライドすることですが、私はむしろクライアントにタブのタイトルを設定する能力を与えたいです。

1
user2265915

もちろん、カスタマイザのすべての設定はテーマのmod(デフォルト)またはオプション($wp_customize->add_setting()の 'type'を 'option'に設定した場合)として保存されます。

get_theme_mod() (または get_option() )を使用してユーザー定義値にアクセスできます。 。

あなたの例では、探している値は次のようにして取得できます。

$downloads_tab_text = get_theme_mod( 'product-downloads-tab' );
3
Iceable