2016-08-24 19 views
0

私はです。はPHP/Wordpressに新規で、何かを稼ぐために苦労しています。複数回使用できる配列を宣言するにはどうすればよいですか?

基本的には、テーマ・カスタマイザで、Googleフォントの配列から選択できるセクションを作成しようとしています。このすべてが正常に動作します、だから、

$wp_customize->add_control(
'site_title', 
array(
    'type' => 'select', 
    'label' => 'Site Title:', 
    'section' => 'typography_section_one', 
    'choices' => array("ABeeZee" => "ABeeZee", 
      "Abel" => "Abel", 
      "Abril Fatface" => "Abril+Fatface", 
      "Aclonica" => "Aclonica", 
      "Acme" => "Acme", 
      "Actor" => "Actor", 
      "Adamina" => "Adamina", 
      etc... 
    ) 
    ) 
); 
} 

add_action('customize_register', 'type_customizer'); 

私は私のアレイとても似ています。全く問題はありません。私は私のセクションを見ることができます、私は自分のフォントを変更することができます、それはすべて素晴らしいです。

しかし、私はこれのいくつかのインスタンスが必要なので、ユーザーはサイトの複数のセクションのフォントを変更できます。つまり、私は新しいコントロールを作成するたびに、この大量のフォント名をコピーして貼り付ける必要はありません。

ここに私の質問があります。とにかく、この配列を複数回使用できるように「グローバル化」することはできますか?

ありがとうございました!

答えて

1

簡単な方法は、それ自身のファイルに配列を配置することです。次のように

my_fonts.php

<?php 

$fonts = array(
    "Abel" => "Abel", 
    "Abril Fatface" => "Abril+Fatface", 
    "Aclonica" => "Aclonica", 
    "Acme" => "Acme", 
    "Actor" => "Actor", 
    "Adamina" => "Adamina", 
); 

return $fonts; 

そして、それを使用する:あなたは、PHP 7を使用している場合は、次のよう

$wp_customize->add_control(
    'site_title', 
    array(
     'type' => 'select', 
     'label' => 'Site Title:', 
     'section' => 'typography_section_one', 
     'choices' => include('my_fonts.php'), 
    ) 
); 

あなたも定数として配列を定義することができます。

define('MY_FONTS', array(
    "Abel" => "Abel", 
    "Abril Fatface" => "Abril+Fatface", 
    "Aclonica" => "Aclonica", 
    "Acme" => "Acme", 
    "Actor" => "Actor", 
    "Adamina" => "Adamina", 
)); 
+0

A-hah!完璧に働いた!そんなにトムありがとう! :) –

1

これを行うには2通りの方法があります:

グローバルキーワードを使用して:

$fonts = array("ABeeZee" => "ABeeZee", 
     "Abel" => "Abel", 
     "Abril Fatface" => "Abril+Fatface", 
     "Aclonica" => "Aclonica", 
     "Acme" => "Acme", 
     "Actor" => "Actor", 
     "Adamina" => "Adamina", 
     etc... 
); 

function customize_register() { 
    global $fonts; 

    $wp_customize->add_control(
     'site_title', 
     array(
      'type' => 'select', 
      'label' => 'Site Title:', 
      'section' => 'typography_section_one', 
      'choices' => $fonts 
     ) 
    ); 
} 
add_action('customize_register', 'type_customizer'); 

THWグローバルキーワードが存在し、それが利用できるように、関数のスコープに変数$arrayを引っ張ってきます。これは最も簡単で最も推奨されない可能性があります。

最良の方法は、クラスの中にすべてのコードをラップすることです:

class foobar { 

    var $fonts = array(
     "ABeeZee" => "ABeeZee", 
     "Abel" => "Abel", 
     "Abril Fatface" => "Abril+Fatface", 
     "Aclonica" => "Aclonica", 
     "Acme" => "Acme", 
     "Actor" => "Actor", 
     "Adamina" => "Adamina", 
     etc... 
    ); 

    function customize_register() { 
     $wp_customize->add_control(
      'site_title', 
      array(
       'type' => 'select', 
       'label' => 'Site Title:', 
       'section' => 'typography_section_one', 
       'choices' => $this->fonts 
      ) 
     ); 
    } 

    function __construct() { 
     add_action('customize_register', array($this, 'type_customizer')); 
    } 

} 

$foo = new foobar(); 

この方法では、あなたが原因同じ変数名に他のプラグイン/テーマとの衝突を心配する必要はありません、すべてがきれいです1つのクラスの中にラップされています。

関連する問題