2016-11-03 11 views
0

私はWordpressを使用しています。記事をループしています。記事ごとにケースを作成してクラスを追加しています。ケース名とクラス名は、各投稿に添付されたカスタムフィールドから取得されます。投稿記事をPHPでループし、ポリゴン(リーフレット)にクラスを追加する

ただし、国に関連する記事が2つあるとします。オーストラリアでは、ループは "このクラスでオーストラリアのための記事を見つけ、ケースを設定し、そのクラスを追加"と言うでしょう。しかし、オーストラリアに関連する記事が2つある場合、そのケースはすでに作成されているため、2番目のクラスを追加することはできません。スキップします。したがって私は間違っていると思うし、switch caseを使用しないでください。

country custom fieldsovereignt property within the geosonの一致をチェックすることで、記事が国に関連している場合は国ポリゴンを描画できますが、ある国に関連する記事が2つある場合はそのポリゴンは一度描いたが、上記のようなクラスの問題がある。

geojson = L.geoJson(statesData, { 
    style: style, 
    style: function(feature) { 
     <?php 
      query_posts(array(
      'post_type' => 'post', 
      'showposts' => -1 
     )); 
     ?> 
     switch (feature.properties.sovereignt) { 
      <?php if (have_posts()) : while (have_posts()) : the_post(); ?> 
       case '<?php the_field("country"); ?>': return {className: '_<?php the_field("year"); ?>'}; 
      <?php endwhile; endif;?> 
     } 
    }, 
    onEachFeature: onEachFeature 
}).addTo(map); 

スイッチケースの例私はPHPとJavaScriptごとに2本のラインを混合されて何が間違ってやっているleaflet docs

答えて

0

からそれを得ました。これは、2つの異種言語の実行について考える必要があるため、Disaster™のレシピです。それが動作するように見える間、それは乱雑になる速い

代わりには、ロジックを少し分け、そして周りの変数の制御を取る:

<?php // Preprocess some data ?> 

var something = <?php echo JSON_encode(some_clearly_defined_data); ?> 

do_something_with_the_data(); 

すなわち:

<?php 
classesForCountries = []; 
while (have_posts()) { 
    classesForCountries[ post.country ] += post.className + ' '; 
} 
?> 

// Now this should look something like {"Australia": "2006 2010 "} 
var classNameMap = <?php echo JSON_encode(classesForCountries); ?>; 

geojson = L.geoJson(statesData, { 
    style: function(feature) { 
     // Now the logic is a simple hashmap look-up 
     var classes = classNameMap[feature.properties.sovereignt]; 
     if (classes) { 
      return {className: classes}; 
     } 
    }, 
}).addTo(map); 

それがきれいに見えませんか? PHPとJSを混在させることができますが、コードを人間が読めるようにしておいてください。と理解しやすいです。検査できる変数と状態を作成します。あなたの将来の自己が読んでみたいコードを作りましょう。

+0

P.S.私の錆びたPHPを許してください、それはしばらくありました。 – IvanSanchez

+0

post.countryとは何ですか?つまり、the_field( "country")のようなフィールドを出力する必要があります。 ? –

+0

必要な方法で出力します。私のPHPが擬似コードであると考えてください。 – IvanSanchez

関連する問題