我正在使用wordpress,我正在为网站的每个页面创建一个"小部件选择器"。在每个页面的后端,我有15个复选框——如果用户选择了一个复选框,它会在该页面的侧边栏中显示特定的小部件。
我有一个很大的PHP文档,包含15个内容。每个include都是一个小部件。如果用户选中该页面上的框,则会触发该包含,如下所示:
if( in_array( 'Blog', get_field('modules') ) ) {
include 'modules/blog.php';
}
这太棒了!但是,用户无法指定小部件的显示顺序。我需要开发某种系统,允许用户选择模块的顺序。
以下是我的想法-如果我能让每个复选框吐出指定的顺序,我需要在php中用某种方法来重新定位includes:
if( in_array( 'Blog', get_field('modules') ) ) {
$order = 2;
include 'modules/blog.php';
}
if( in_array( 'Gallery', get_field('modules') ) ) {
$order = 1;
include 'modules/gallery.php';
}
现在,我需要一些方法来根据他们提供的订单重新排序这两个"块"。我能以某种方式做到这一点吗?显然,我想使用PHP,但如果不可能的话,我可以用jQuery来实现。有什么想法吗?
不包括模块,而是将列表推送到一个数组中,该数组最终将包括模块。类似:
$final_modules = array();
if( in_array( 'Blog', get_field('modules') ) ) {
$order = 2;
$final_modules[$order] = 'modules/blog.php';
}
if( in_array( 'Gallery', get_field('modules') ) ) {
$order = 1;
$final_modules[$order] = 'modules/gallery.php';
}
//sort based on key
ksort($final_modules);
foreach($final_modules as $order => $include_file) {
include $include_file;
}