コード例 #1
0
 /**
  * Handle identifying the template parts to use and trigger loading those parts
  *
  * @param string $layout Optional parameter to specify a specific layout to use
  */
 public function add_template_parts($layout = '')
 {
     if ('' == $layout) {
         if (!wds_page_builder_get_option('parts_saved_layouts') && (!is_page() || wds_page_builder_get_option('post_types') && !in_array(get_post_type(), wds_page_builder_get_option('post_types')))) {
             return;
         }
     }
     $post_id = is_singular() ? get_queried_object()->ID : 0;
     $parts = get_post_meta($post_id, '_wds_builder_template', true);
     $global_parts = wds_page_builder_get_option('parts_global_templates');
     $saved_layouts = wds_page_builder_get_option('parts_saved_layouts');
     $registered_layouts = get_option('wds_page_builder_layouts');
     // if there are no parts saved for this post, no global parts, no saved layouts, and no layout passed to the action
     if (!$parts && !$global_parts && !$saved_layouts && $layout == '') {
         return;
     }
     // if a layout was passed or a layout is being used by default for this post type, we're going to check that first
     if (!$parts && $saved_layouts || !$parts && $registered_layouts) {
         // check if the layout requested is one that was registered
         if ($registered_layouts) {
             $saved_layouts = $registered_layouts;
         }
         // loop through the saved layouts, we'll check for the one we're looking for
         foreach ($saved_layouts as $saved_layout) {
             // is the layout the one that was named or one that was set for this post type?
             if (isset($saved_layout['layouts_name']) && $layout == $saved_layout['layouts_name']) {
                 $parts = array();
                 foreach ($saved_layout['template_group'] as $template_group) {
                     $parts[] = array('template_group' => $template_group);
                 }
             } elseif (isset($saved_layout['default_layout']) && is_array($saved_layout['default_layout']) && in_array(get_post_type($post_id), $saved_layout['default_layout'])) {
                 // loop through the template parts and prepare the $parts variable for the load_template_part method
                 foreach ($saved_layout['template_group'] as $template_group) {
                     $parts[] = array('template_group' => $template_group);
                 }
                 // end template part loop
             }
             // end layout check
         }
         // end saved layouts loop
     } elseif (!$parts || in_array('none', $parts[0])) {
         $parts = $global_parts;
     }
     // loop through each part and load the template parts
     if (is_array($parts)) {
         foreach ($parts as $part) {
             $this->load_template_part($part);
         }
     }
 }
コード例 #2
0
/**
 * Get a list of the template parts in the current theme, return them
 * in an array.
 *
 * @return array An array of template parts
 */
function wds_page_builder_get_parts()
{
    $parts = array();
    $parts_dir = wds_page_builder_get_option('parts_dir') ? trailingslashit(get_stylesheet_directory()) . wds_page_builder_get_option('parts_dir') : get_stylesheet_directory() . '/parts';
    $parts_prefix = wds_page_builder_get_option('parts_prefix') ? wds_page_builder_get_option('parts_prefix') : 'part';
    // add a generic 'none' option
    $parts['none'] = __('- No Template Parts -', 'wds-simple-page-builder');
    foreach (glob($parts_dir . '/' . $parts_prefix . '-*.php') as $part) {
        $part_slug = str_replace(array($parts_dir . '/' . $parts_prefix . '-', '.php'), '', $part);
        $parts[$part_slug] = ucwords(str_replace('-', ' ', $part_slug));
    }
    if (empty($parts)) {
        return __('No template parts found', 'wds-simple-page-builder');
    }
    return $parts;
}