假设您的自定义帖子类型是“歌曲”,我想您需要的是如下内容:
首先,允许主题为您的自定义帖子类型提供一个设计/模板文件,如果WordPress找不到,请返回您在插件文件夹中提供的设计。
<?php
// Template Logic:
function mp3_player_design_init_template_logic($original_template) {
// Check Theme Template or Plugin Template for archive-songs.php
if(is_post_type_archive(\'songs\') || (is_search() && $_GET[\'post_type\'] === \'songs\')) {
if(file_exists(get_template_directory_uri() . \'/archive-songs.php\')) {
return get_template_directory_uri() . \'/archive-songs.php\';
} else {
return plugin_dir_path(__FILE__) . \'templates/archive-songs.php\';
} // Check for single page
} elseif(is_singular(\'songs\')) {
if(file_exists(get_template_directory_uri() . \'/single-songs.php\')) {
return get_template_directory_uri() . \'/single-songs.php\';
} else {
return plugin_dir_path(__FILE__) . \'templates/single-songs.php\';
}
}
return $original_template;
}
add_action(\'template_include\', \'mp3_player_design_init_template_logic\');
我们向WordPress“添加一个操作”,它使用/可以操作挂钩“template\\u include”。这个动作挂钩接受一个参数($original\\u template),然后通过一些逻辑来确定要使用哪个模板文件。
存档歌曲。php是将所有歌曲/流/播放列表作为一个整体逐一列出的文件。
该文件的逻辑如下:
<?php
// Query Arguments, grab all data (up to 30 per page)
$song_args = array(
\'post_type\' => \'songs\',
\'posts_per_page\' => \'30\',
\'orderby\' => \'name\',
\'order\'=>\'ASC\'
);
$loop = new WP_Query($fsongs_args);
// now, loop over the result array and build your html design
// You could also use the WordPress Options/settings api to get some colors or layout options in order to make your design changable by the user
while ( $loop->have_posts() ) : $loop->the_post();
// Get song Meta Data
$slogan = get_post_meta(get_the_ID(), \'slogan\', true);
$subtext = get_post_meta(get_the_ID(), \'subtext\', true);
// Some card design with bootstrap for example
// Start song card
$html .= \'<div class="col-xs-12 col-sm-6 col-md-4 song-cards" id="song-id-\'.get_the_ID().\'">\';
$html .= \'<div class="song-card">\';
$html .= \'<h3>\'.get_the_title().\'</h3>\';
$html .= $subtext;
$html .= $slogan;
$html .= \'</div>\';
$html .= \'</div>\';
endwhile;
// spit out/echo the html design into your document body
echo $html;
// Reset the WordPress query to avoid funny results in the next query..
wp_reset_query();
所有这些代码都会进入主插件文件。另外,请注意,文件,存档歌曲。php和单曲。php位于名为“模板”的子文件夹中。
请记住,这只是一个进入黑暗的建议。正如我在上面所写的,有很多方法可以实现设计自适应。我也不得不承认,我不完全理解你所说的“艺术品”是什么意思。
对我来说,这是一张CD或LP的旧专辑封面,与插件或主题的音乐播放器布局设计无关。
如果你能更好地解释一下你的意思,那会很有帮助的。
然而,我希望这能有所帮助。如果你有任何问题,请告诉我。