Advertisement
pietergoosen

Custom sidebar per page

Jan 19th, 2014
184
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.03 KB | None | 0 0
  1. function pietergoosen_widgets_init() {
  2. $dynamic_widget_areas = array (
  3. 'sidebar-21' => __( 'Page Specific Sidebar 1', 'pietergoosen' ),
  4. 'sidebar-22' => __( 'Page Specific Sidebar 2', 'pietergoosen' ),
  5. 'sidebar-23' => __( 'Page Specific Sidebar 3', 'pietergoosen' ),
  6. 'sidebar-24' => __( 'Page Specific Sidebar 4', 'pietergoosen' ),
  7. 'sidebar-25' => __( 'Page Specific Sidebar 5', 'pietergoosen' ),
  8. 'sidebar-26' => __( 'Page Specific Sidebar 6', 'pietergoosen' ),
  9. 'sidebar-27' => __( 'Page Specific Sidebar 7', 'pietergoosen' ),
  10. 'sidebar-28' => __( 'Page Specific Sidebar 8', 'pietergoosen' ),
  11. 'sidebar-29' => __( 'Page Specific Sidebar 9', 'pietergoosen' ),
  12. 'sidebar-30' => __( 'Page Specific Sidebar 10', 'pietergoosen' ),
  13. );
  14.  
  15. foreach ( $dynamic_widget_areas as $id => $dynamic_widget_area ) {
  16. register_sidebar(
  17. array (
  18. 'name' => __( $dynamic_widget_area, 'pietergoosen' ),
  19. 'id' => $id,
  20. 'description' => __( 'Page specific sidebars above the content sidebar', 'pietergoosen' ),
  21. 'before_widget' => '<aside id="%1$s" class="widget %2$s">',
  22. 'after_widget' => '</aside>',
  23. 'before_title' => '<h1 class="widget-title">',
  24. 'after_title' => '</h1>',
  25. ));
  26. }
  27. }
  28. add_action( 'widgets_init', 'pietergoosen_widgets_init' );
  29.  
  30. // Add dynamic sidebars that can be chosen per page
  31. add_action('add_meta_boxes', 'pietergoosen_voeg_cspp_metabox_by');
  32. add_action('save_post', 'pietergoosen_gradeer_post_meta_op');
  33.  
  34. function pietergoosen_voeg_cspp_metabox_by() {
  35. add_meta_box( 'custom_sidebar_per_page', __( 'Sidebar options', 'pietergoosen' ), 'pietergoosen_cspp_skakel', 'page', 'side', 'default');
  36. }
  37.  
  38. function pietergoosen_cspp_skakel( $post )
  39. {
  40. global $wp_registered_sidebars;
  41.  
  42. $custom = get_post_custom($post->ID);
  43.  
  44. if(isset($custom['custom_sidebar_per_page']))
  45. $val = $custom['custom_sidebar_per_page'][0];
  46. else
  47. $val = "default";
  48.  
  49. // The actual fields for data entry
  50. $output = '<p><label for="pietergoosen_new_field">'.__("Choose a sidebar to display", 'pietergoosen' ).'</label></p>';
  51. $output .= "<select name='custom_sidebar_per_page'>";
  52.  
  53. // Add a default option
  54. $output .= "<option";
  55. if($val == "default")
  56. $output .= " selected='selected'";
  57. $output .= " value='default'>".__('Default', 'pietergoosen')."</option>";
  58.  
  59. // Fill the select element with all registered sidebars
  60. foreach($wp_registered_sidebars as $sidebar_id => $sidebar)
  61. {
  62. $output .= "<option";
  63. if($sidebar_id == $val)
  64. $output .= " selected='selected'";
  65. $output .= " value='".$sidebar_id."'>".$sidebar['name']."</option>";
  66. }
  67.  
  68. $output .= "</select>";
  69.  
  70. echo $output;
  71. }
  72.  
  73. function pietergoosen_gradeer_post_meta_op($post_id){
  74. if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE)
  75. return;
  76. if (!current_user_can( 'edit_page', $post_id ))
  77. return;
  78. $data = $POST['link'];
  79. update_post_meta( $post->ID, "custom_sidebar_per_page", $data );
  80. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement