0

私はワードプレスを使用しており、サイトのすべてのページに「ウィジェットチューザー」を作成しています。各ページのバックエンドには15個のチェックボックスがあります。ユーザーがチェックボックスを選択すると、そのページのサイドバーにその特定のウィジェットが表示されます。

15個のインクルードを持つ大きなPHPドキュメントがあります。各インクルードはウィジェットです。ユーザーがそのページのチェックボックスをオンにすると、そのインクルードは次のようにトリガーされます。

 if( in_array( 'Blog', get_field('modules') ) ) { 
    include 'modules/blog.php'; 
 }

これはうまくいきます!ただし、ウィジェットが表示される順序をユーザーが指定する方法はありません。ユーザーがモジュールの順序を選択できるようなシステムを開発する必要があります。

これが私が考えていたことです-指定された順序を吐き出すために各チェックボックスを取得できる場合、インクルードを再配置するためにphp内で何らかの方法が必要になります。

 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'; 
}

ここで、提供された順序に基づいて、これら2つの「ブロック」を並べ替える方法が必要になります。どういうわけかそれを実現できますか?明らかに私はPHPを使いたいのですが、それが不可能な場合はjQueryでそれを行うことができます。何かご意見は?

4

1 に答える 1

0

モジュールを含める代わりに、リストを配列にプッシュして、最後にそれらを含めます。好き:

$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;
}
于 2013-02-08T15:09:42.530 に答える