任何人都可以通過使用foreach循環來幫助我創建一個如下所示的短代碼嗎?如何使用foreach循環創建這個長的短代碼(PHP + Wordpress)
此簡碼的目的是生成一個播放列表,並使用開始和結束標記:
[zoomsounds id="favorites_playlist"] [/zoomsounds]
在這些標記之間,也就是要添加到播放列表中的每首歌曲都有自己的短代碼,如這樣的:
[zoomsounds_player config="favorites-playlist" source="'.$source.'" type="detect" songname="'.$title.'" init_player="off" play_target="footer"]
所以我們可以說,用戶在自己的播放列表中的歌曲2,整個簡碼會是這個樣子:
[zoomsounds id="favorites_playlist"][zoomsounds_player config="favorites-playlist" source="http://www.test.com/sound/brobob.mp3" type="detect" songname="Song 1" init_player="off" play_target="footer"][zoomsounds_player config="favorites-playlist" source="http://www.test.com/sound/brobob2.mp3" type="detect" songname="Song 2" init_player="off" play_target="footer"][/zoomsounds]
正如您所看到的,每首歌曲的短代碼都是一個接一個地出現在開始/結束標籤中。
我認爲我可以做到的最簡單的方法是使用foreach循環來生成每首歌的短代碼。這是我寫的簡單功能。
function streamFavoritesPlaylist() {
$favs[] = get_user_favorites();
echo do_shortcode('[zoomsounds id="favorites_playlist"]');
foreach ($favs[0] as $fav) {
$title = get_the_title($fav);
$post = get_post($fav);
$post_slug = $post->post_name;
$source = '.../mp3/'.$post_slug.'.mp3';
$song_name = get_the_title($fav);
echo do_shortcode('[zoomsounds_player config="favorites-playlist" source="'.$source.'" type="detect" songname="'.$title.'" init_player="off" play_target="footer"]');
}
echo do_shortcode('[/zoomsounds]');
}
很明顯,這是做這樣的事情的錯誤方法。更何況,結束標籤沒有采取,而是在文本中顯示。也許這就是爲什麼整個事情都不起作用?
我應該提到,通過使用它自己的工作很好的整個短代碼。只有當我嘗試以這種方式構建短碼時,它纔會起作用。
你會如何建議我去完成這樣的事情?非常感謝。
UPDATE: 感謝大家的輸入。這就是我想出來的,與@DACrosby發佈的內容類似,@TheManiac建議。
function streamFavoritesPlaylist() {
$favs[] = get_user_favorites();
$shortcode_full = "";
foreach ($favs[0] as $fav) {
$title = get_the_title($fav);
$post = get_post($fav);
$post_slug = $post->post_name;
$source = '.../mp3/'.$post_slug.'.mp3';
$song_name = get_the_title($fav);
$shortcode = '[zoomsounds_player config="favorites-playlist" source="'.$source.'" type="detect" songname="'.$title.'" init_player="off" play_target="footer"]';
$shortcode_full .= $shortcode;
}
return '[zoomsounds id="favorites_playlist"]'.$shortcode_full.'[/zoomsounds]';
}
而且,我確實需要產生的短代碼,我使用:
<?php echo do_shortcode(streamFavoritesPlaylist()); ?>
它的工作完美。再次感謝社區。
我可能不會跟隨,但你應該使用'do_shortcode'如果你只是試圖生成我不認爲簡碼文本。將整個代碼作爲單個字符串生成,然後對結果調用'do_shortcode'。 –
@TheManiac這是非常有意義的。讓我試試看。任何機會,你可以給我一個快速片段?無論哪種方式,謝謝! – anthonyCam
看起來像DACrosby已經爲你做了一個片段。很確定他說得對。 –