1

短縮版:

これから配列を作成する必要があります。

$locations = array(
    [0] => 'first location',
    [1] => 'second location'
);

これに:

$locations = array( 'first location', 'second location' );

ロングバージョン

MapPress という WordPress のプラグインを使用して、地図を動的に生成しています。マップを生成できるように、値の配列を別の配列に出力する必要があります。ドキュメントには、これを動的に実行できることが示されていますが、実際には、必要なマップ ポイントの数がわかっている限り、マップを生成できることを意味しているようです。これらのカスタム投稿の多くが埋められていることに基づいてマップを生成したいと思います。

投稿からカスタム情報を取得してフィールドに入力し、収集した配列を別の配列に保存しています。ここで説明した方法を使用して、必要な各投稿の情報を取得し、$locations という配列に格納しています。ドキュメントに基づいて、キー値 ("[0] =>") なしで配列をこの配列に出力する必要がありますが、これを効率的に行う方法を見つけることができないようです。これは別の人が抱えていた問題のようですが、私のものではうまくいかない彼女の特定のニーズのために解決されました.

このすべてを行うために使用されるコードは以下のとおりです。

// Let's make a new map.
$mymap = new Mappress_Map(array("width" => 800));

// Run a loop to grab all posts of type "location"
global $post;
$tmp_post = $post;
$args = array( 'post_type' => 'location', 'posts_per_page'=> -1 );
$myposts = get_posts( $args );

$locations = array();
foreach( $myposts as $post ) : setup_postdata($post);

    // Grab all the post's necessary data for creation of the map 
    $title = get_the_title();
    $id = get_the_ID();
    $location_address = get_field("location_address");
    $location_excerpt = get_field("location_excerpt");

    // Plug that data into Mappress' stuff, using dynamic variables
    $mypoi = new Mappress_Poi(array(
        "title" => $title, 
        "body" => $location_excerpt, 
        "address" => $location_address .'<a href="'.$id.'">More Information >></a>'
    ));

    // This converts the address to a longitude/latitude location for the plugin's use
    $mypoi->geocode(); 

    // this is where I get hung up. I need to print the array without the key values
    $locations[] = $mypoi;
endforeach;

$post = $tmp_post; 
// print_r($locations); when I print_r them like they are, they have key values

$mymap->pois = array($locations); //this generates all the maps POIs to create the map
echo $mymap->display(array("directions"=>"none")); // this just displays the map

長い間、私は知っています。しかし、これは特定の問題であり、利用可能なすべての情報を使って解決する方が簡単かもしれません.

ありがとう!

編集:

$locations は私が望んでいたものを出力していましたが、@mario は、配列をそのまま受け入れる必要があることに気付きました。設定したところ、以下のようになりました。

$locations = array();
$mymap->pois = array($locations);

つまり、次のように出力されます。

$mymap->pois = array( array('location info 1', 'location info 2')); 

私がする必要があったのはこれだけでした。

$mymap->pois = $locations; 

そして、それは完璧に機能しました。私はとてもばかげていると感じます。最終的に答えを得るためにこれが必要でした。皆さんの提案に感謝します!

4

1 に答える 1

0

これにより、必要に応じて任意の配列 (この場合は$locations) が出力されます。$o印刷する出力が含まれています。

$a = $locations;
$o = '$locations = array(';
foreach ($a as &$v)
    $v = "'$v'";
$o .= implode(', ', $a);
$o .= ');';
于 2012-10-18T23:27:33.320 に答える