/** * do import for posts * @param $post * @return array */ public function process_post($post) { $post_id = $this->get_tag($post, 'wp:post_id'); $post_title = $this->get_tag($post, 'title'); $post_date = $this->get_tag($post, 'wp:post_date'); $post_date_gmt = $this->get_tag($post, 'wp:post_date_gmt'); $comment_status = $this->get_tag($post, 'wp:comment_status'); $ping_status = $this->get_tag($post, 'wp:ping_status'); $status = $this->get_tag($post, 'wp:status'); $post_name = $this->get_tag($post, 'wp:post_name'); $post_parent = $this->get_tag($post, 'wp:post_parent'); $menu_order = $this->get_tag($post, 'wp:menu_order'); $post_type = $this->get_tag($post, 'wp:post_type'); $post_password = $this->get_tag($post, 'wp:post_password'); $is_sticky = $this->get_tag($post, 'wp:is_sticky'); $guid = $this->get_tag($post, 'guid'); $post_author = $this->get_tag($post, 'dc:creator'); $post_excerpt = $this->get_tag($post, 'excerpt:encoded'); $post_excerpt = preg_replace_callback('|<(/?[A-Z]+)|', array(&$this, '_normalize_tag'), $post_excerpt); $post_excerpt = str_replace('<br>', '<br />', $post_excerpt); $post_excerpt = str_replace('<hr>', '<hr />', $post_excerpt); $post_content = $this->get_tag($post, 'content:encoded'); $post_content = preg_replace_callback('|<(/?[A-Z]+)|', array(&$this, '_normalize_tag'), $post_content); $post_content = str_replace('<br>', '<br />', $post_content); $post_content = str_replace('<hr>', '<hr />', $post_content); $post_content = $this->parser->pre_shortcode_tags($post_content); $postdata = compact('post_id', 'post_author', 'post_date', 'post_date_gmt', 'post_content', 'post_excerpt', 'post_title', 'status', 'post_name', 'comment_status', 'ping_status', 'guid', 'post_parent', 'menu_order', 'post_type', 'post_password', 'is_sticky'); $attachment_url = $this->get_tag($post, 'wp:attachment_url'); if ($attachment_url) { $postdata['attachment_url'] = $attachment_url; } //hw attachment preg_match_all('|<hw:attachment>(.+?)</hw:attachment>|is', $post, $attachments); $attachments = $attachments[1]; if ($attachments) { foreach ($attachments as $p) { $hw_attachment_url = $this->get_tag($p, 'hw:url'); if ($hw_attachment_url) { if (!HW_URL::valid_url($hw_attachment_url)) { $postdata['attachment_url'] = $this->parser->data('import_path') . $hw_attachment_url; } else { $postdata['attachment_url'] = $hw_attachment_url; } //found new attachment in post if ($post_type !== 'attachment') { $_postdata = hwArray::cloneArray($postdata); $_postdata['post_content'] = HW_String::limit($_postdata['post_content'], 50); $_postdata['post_excerpt'] = HW_String::limit($_postdata['post_excerpt'], 50); $_postdata['post_type'] = 'attachment'; $_postdata['_id'] = $this->get_tag($p, 'hw:_id'); $_postdata['thumbnail'] = $this->get_tag($p, 'hw:thumbnail'); if ($_postdata['thumbnail']) { $_postdata['hw_thumbnail_id'] = $this->get_tag($p, 'hw:_id'); } $this->posts[] = $_postdata; } /*else { $postdata['thumbnail'] = $this->get_tag($p, 'hw:thumbnail'); if($postdata['thumbnail']) $postdata['hw_thumbnail_id'] = $this->get_tag($p, 'hw:_id'); }*/ } } } preg_match_all('|<category domain="([^"]+?)" nicename="([^"]+?)">(.+?)</category>|is', $post, $terms, PREG_SET_ORDER); foreach ($terms as $t) { $post_terms[] = array('slug' => $t[2], 'domain' => $t[1], 'name' => str_replace(array('<![CDATA[', ']]>'), '', $t[3])); } if (!empty($post_terms)) { $postdata['terms'] = $post_terms; } preg_match_all('|<wp:comment>(.+?)</wp:comment>|is', $post, $comments); $comments = $comments[1]; if ($comments) { foreach ($comments as $comment) { preg_match_all('|<wp:commentmeta>(.+?)</wp:commentmeta>|is', $comment, $commentmeta); $commentmeta = $commentmeta[1]; $c_meta = array(); foreach ($commentmeta as $m) { $c_meta[] = array('key' => $this->get_tag($m, 'wp:meta_key'), 'value' => $this->get_tag($m, 'wp:meta_value')); } $post_comments[] = array('comment_id' => $this->get_tag($comment, 'wp:comment_id'), 'comment_author' => $this->get_tag($comment, 'wp:comment_author'), 'comment_author_email' => $this->get_tag($comment, 'wp:comment_author_email'), 'comment_author_IP' => $this->get_tag($comment, 'wp:comment_author_IP'), 'comment_author_url' => $this->get_tag($comment, 'wp:comment_author_url'), 'comment_date' => $this->get_tag($comment, 'wp:comment_date'), 'comment_date_gmt' => $this->get_tag($comment, 'wp:comment_date_gmt'), 'comment_content' => $this->get_tag($comment, 'wp:comment_content'), 'comment_approved' => $this->get_tag($comment, 'wp:comment_approved'), 'comment_type' => $this->get_tag($comment, 'wp:comment_type'), 'comment_parent' => $this->get_tag($comment, 'wp:comment_parent'), 'comment_user_id' => $this->get_tag($comment, 'wp:comment_user_id'), 'commentmeta' => $c_meta); } } if (!empty($post_comments)) { $postdata['comments'] = $post_comments; } preg_match_all('|<wp:postmeta>(.+?)</wp:postmeta>|is', $post, $postmeta); $postmeta = $postmeta[1]; if ($postmeta) { foreach ($postmeta as $p) { $post_postmeta[] = array('key' => $this->get_tag($p, 'wp:meta_key'), 'value' => $this->get_tag($p, 'wp:meta_value', true)); } } if (!empty($post_postmeta)) { $postdata['postmeta'] = $post_postmeta; } return $postdata; }
/** * extend from wordpress core * @param string $output * @param object $category * @param int $depth * @param array $args * @param int $id */ public function start_el(&$output, $category, $depth = 0, $args = array(), $id = 0) { if (!empty($args['mydata']['skin_setting'])) { $skin_setting = $args['mydata']['skin_setting']; } $this->current_cat = new HW_TimberTerm($category); /** This filter is documented in wp-includes/category-template.php */ $cat_name = apply_filters('list_cats', esc_attr($category->name), $category); //valid $options = (object) $args['options']; if (!isset($options->before)) { $options->before = ''; } if (!isset($options->submenu_before)) { $options->submenu_before = ''; } if (!isset($options->after)) { $options->after = ''; } if (!isset($options->submenu_after)) { $options->submenu_after = ''; } if (!isset($options->link_before)) { $options->link_before = ''; } if (!isset($options->submenu_link_before)) { $options->submenu_link_before = ''; } if (!isset($options->link_after)) { $options->link_after = ''; } if (!isset($options->submenu_link_after)) { $options->submenu_link_after = ''; } //whether current menu item has sub menu $item_has_sub = $this->item_has_sub($category); //separator if (!empty($options->ex_separator) && isset($options->show_items_separator)) { $output .= $options->ex_separator; } $data['args'] = hwArray::cloneArray($options); $data['indent'] = $indent = $depth ? str_repeat("\t", $depth) : ''; $data['item_has_sub'] = $item_has_sub; $id = apply_filters('hw_cat_item_id', 'cat-item-' . $category->term_id, $category, $args, $depth); $data['id'] = ' id="cat-' . esc_attr($category->term_id) . '"'; if ($item_has_sub && !empty($options->remove_link_parent)) { $data['remove_link_parent'] = true; } else { $data['remove_link_parent'] = false; } //item class //category item class $classes[] = 'cat-item cat-item-' . $category->term_id; if (!empty($args['current_category'])) { $_current_category = get_term($args['current_category'], $category->taxonomy); if ($category->term_id == $args['current_category']) { $classes[] = 'current-cat'; if (isset($skin_setting['current_item_class'])) { $classes[] = ' ' . $skin_setting['current_item_class']; } } elseif ($category->term_id == $_current_category->parent) { $classes[] = 'current-cat-parent'; } } if ($item_has_sub && !empty($options->menu_item_class_has_submenu)) { //cat item class has submenu $classes[] = $options->menu_item_class_has_submenu; } if ($depth > 0 && !empty($options->menu_item_class_submenu)) { //cat item class in submenu $classes[] = $options->menu_item_class_submenu; } $data['classes'] = $class_names = join(' ', apply_filters('cat_item_css_class', HW_Validation::valid_classes_attr(array_filter($classes)), $category, $args, $depth)); //custom fields $custom_item = get_post_custom($category->term_id); $data['field-01'] = isset($custom_item['menu-item-field-01'][0]) ? $custom_item['menu-item-field-01'][0] : ''; $data['field-02'] = isset($custom_item['menu-item-field-02'][0]) ? $custom_item['menu-item-field-02'][0] : ''; //cat item image if (isset($options->show_icon) && $options->show_icon) { $image_url = HW_ACF_Taxonomy::get_field_image($category); if ($image_url) { $image_img = '<img src="' . $image_url . '" class="hw-cat-item-icon"/>'; } else { $image_img = ''; } } $data['image_url'] = isset($image_url) ? $image_url : ''; $data['image_img'] = isset($image_img) ? $image_img : ''; /** * anchor attributes */ $atts = array(); $atts['href'] = esc_url(get_term_link($category)); $atts['class'] = array(); //anchor classes if ($item_has_sub && isset($options->anchor_class_has_submenu)) { //anchor class has submenu $atts['class'][] = $options->anchor_class_has_submenu; } if ($depth > 0 && !empty($options->anchor_class_submenu)) { //anchor class in submenu $atts['class'][] = $options->anchor_class_submenu; } $atts = apply_filters('hw_cat_link_attributes', $atts, $category, $args, $depth, $this); //validation $atts['class'] = HW_Validation::valid_classes_attr(array_filter($atts['class'])); $atts['class'] = join(' ', $atts['class']); if ($args['use_desc_for_title'] && !empty($category->description)) { $atts['title'] = esc_attr(strip_tags(apply_filters('category_description', $category->description, $category))); } $attributes = HW_UI_Component::generateAttributes($atts); //addition attribute build for item link if ($depth == 0 && !empty($options->anchor_attrs)) { $attributes .= " {$options->anchor_attrs}"; } elseif ($depth != 0 && !empty($options->anchor_attrs_submenu)) { $attributes .= " {$options->anchor_attrs_submenu}"; } //attributes item link for submenu if ($item_has_sub && !empty($options->anchor_attrs_has_submenu)) { $attributes .= " {$options->anchor_attrs_has_submenu}"; } $data['attributes'] = $attributes; $data['title'] = apply_filters('the_title', $category->name, $category->term_id); $link = $options->before; $link .= '<a ' . $attributes . ' >'; $link .= $options->link_before . $cat_name . $options->link_after; $link .= '</a>'; $link .= $options->after; //feed image if (!empty($args['feed_image']) || !empty($args['feed'])) { $link .= ' '; if (empty($args['feed_image'])) { $link .= '('; } $link .= '<a href="' . esc_url(get_term_feed_link($category->term_id, $category->taxonomy, $args['feed_type'])) . '"'; if (empty($args['feed'])) { $alt = ' alt="' . sprintf(__('Feed for all posts filed under %s'), $cat_name) . '"'; } else { $alt = ' alt="' . $args['feed'] . '"'; $name = $args['feed']; $link .= empty($args['title']) ? '' : $args['title']; } $link .= '>'; if (empty($args['feed_image'])) { $link .= $name; } else { $link .= "<img src='" . $args['feed_image'] . "'{$alt}" . ' />'; } $link .= '</a>'; if (empty($args['feed_image'])) { $link .= ')'; } } if (!empty($args['show_count'])) { $link .= ' (' . number_format_i18n($category->count) . ')'; } //render cat item if (isset($args['twig']) && HW_NAVMENU::twig_asset_exists('start_el.twig', $args['twig'])) { $tpl = $args['twig']->loadTemplate('start_el.twig'); $data['term'] = $this->current_cat; $output .= $tpl->render($data); } else { if ('list' == $args['style']) { $output .= $indent . "\t<li"; //class attr $output .= ' class="' . $class_names . '"'; $output .= ">{$link}\n"; } else { $output .= "\t{$link}<br />\n"; } } }
/** * @param $_path * @param $source * @param string $type */ public static function get_skin_realpath($_path, $source, $type = self::SKIN_FILES) { if (!is_array($_path)) { return $_path; } $path = hwArray::cloneArray($_path); //apply skin for plugin? $apply_plugin = ''; if (isset($_path['apply_plugin'])) { $apply_plugin = $_path['apply_plugin']; } if ($type == self::SKIN_FILES) { if ($source == 'plugin') { if (isset($path['path']) && strpos($path['path'], HW_HOANGWEB_PATH) === false) { if (!$apply_plugin) { //get plugin name $apply_plugin = self::get_apply_plugin_from_path($path['path']); } $path['path'] = HW_File_Directory::generate_path(HW_HOANGWEB_PATH, $path['path']); } if (isset($path['url']) && !HW_URL::valid_url($path['url'])) { if (!$apply_plugin) { //get plugin name $apply_plugin = self::get_apply_plugin_from_path($path['url']); } $path['url'] = HW_File_Directory::generate_url(HW_HOANGWEB_URL, $path['url']) . '/'; } } elseif ($source == 'theme') { $theme_source_url = get_stylesheet_directory_uri(); $theme_source_path = get_stylesheet_directory(); /*if($apply_plugin) { //no need because i added in get_skins method $theme_source_url .= '/modules/'. $apply_plugin; $theme_source_path .= '/modules/'. $apply_plugin; }*/ if (isset($path['path']) && strpos($path['path'], get_stylesheet_directory()) === false) { $path['path'] = HW_File_Directory::generate_path($theme_source_path, $path['path']); } if (isset($path['url']) && !HW_URL::valid_url($path['url'])) { $path['url'] = HW_File_Directory::generate_url($theme_source_url, $path['url']) . '/'; } } elseif ($source == 'wp_content') { if (isset($path['path']) && strpos($path['path'], WP_CONTENT_DIR) === false) { $path['path'] = HW_File_Directory::generate_path(WP_CONTENT_DIR, $path['path']); } if (isset($path['url']) && !HW_URL::valid_url($path['url'])) { $path['url'] = HW_File_Directory::generate_url(WP_CONTENT_URL, $path['url']) . '/'; } } } return (object) $path; }