AlkantarClanX12
Current Path : /home/thanudqk/128shen.com/wp-content/plugins/LayerSlider/assets/classes/ |
Current File : /home/thanudqk/128shen.com/wp-content/plugins/LayerSlider/assets/classes/class.ls.posts.php |
<?php // Prevent direct file access defined( 'LS_ROOT_FILE' ) || exit; class LS_Posts { // Stores the last query results public $post = null; public $posts = null; /** * Returns posts that matches the query params * @param array $args Array of WP_Query attributes * @return bool Success of the query */ public static function find( $args = [] ) { // Crate new instance $instance = new self; if($instance->posts = get_posts($args)) { $instance->post = $instance->posts[0]; } return $instance; } public static function getPostTypes() { // Get post types $postTypes = get_post_types(); // Remove some defalt post types if(isset($postTypes['revision'])) { unset($postTypes['revision']); } if(isset($postTypes['nav_menu_item'])) { unset($postTypes['nav_menu_item']); } // Convert names to plural foreach($postTypes as $key => $item) { if(!empty($item)) { $postTypes[$key] = []; $postTypes[$key]['slug'] = $item; $postTypes[$key]['obj'] = get_post_type_object($item); $postTypes[$key]['name'] = $postTypes[$key]['obj']->labels->name; } } return $postTypes; } public function getParsedObject() { if( ! $this->posts ) { return []; } foreach($this->posts as $key => $val) { $this->post = $val; $ret[$key]['post-id'] = $val->ID; $ret[$key]['post-slug'] = $val->post_name; $ret[$key]['post-url'] = get_permalink($val->ID); $ret[$key]['date-published'] = get_the_date('', $val->ID); $ret[$key]['time-published'] = get_the_time('', $val->ID); $ret[$key]['date-modified'] = get_the_modified_date('', $val->ID); $ret[$key]['time-modified'] = get_the_modified_time('', $val->ID); $ret[$key]['thumbnail'] = $this->getFeaturedImage( $val->ID, 'thumbnail' ); $ret[$key]['thumbnail-url'] = $this->getFeaturedImageURL( $val->ID, 'thumbnail' ); $ret[$key]['image'] = $this->getFeaturedImage( $val->ID ); $ret[$key]['image-url'] = $this->getFeaturedImageURL( $val->ID ); $ret[$key]['title'] = htmlspecialchars($this->getTitle()); $ret[$key]['content'] = $this->getContent(); $ret[$key]['excerpt'] = $this->getExcerpt(); $ret[$key]['author'] = get_userdata($val->post_author)->user_nicename; $ret[$key]['author-name'] = get_userdata($val->post_author)->display_name; $ret[$key]['author-id'] = $val->post_author; $ret[$key]['author-avatar'] = $this->getAuthorImage($val); $ret[$key]['categories'] = $this->getCategoryList($val); $ret[$key]['tags'] = $this->getTagList($val); $ret[$key]['comments'] = $val->comment_count; } return $ret; } public function getWithFormat($str, $textlength = 0) { if(!is_object($this->post)) { return $str; } // Post ID if(stripos($str, '[post-id]') !== false) { $str = str_replace('[post-id]', $this->post->ID, $str); } // Post slug if(stripos($str, '[post-slug]') !== false) { $str = str_replace('[post-slug]', $this->post->post_name, $str); } // Post URL if(stripos($str, '[post-url]') !== false) { $str = str_replace('[post-url]', get_permalink($this->post->ID), $str); } // Date published if(stripos($str, '[date-published]') !== false) { $str = str_replace('[date-published]', get_the_date('', $this->post->ID), $str); } // Time published if(stripos($str, '[time-published]') !== false) { $str = str_replace('[time-published]', get_the_time('', $this->post->ID), $str); } // Date modified if(stripos($str, '[date-modified]') !== false) { $str = str_replace('[date-modified]', get_the_modified_date('', $this->post->ID), $str); } // Time modified if(stripos($str, '[time-modified]') !== false) { $str = str_replace('[time-modified]', get_the_modified_time('', $this->post->ID), $str); } // Featured image if(stripos($str, '[image]') !== false) { $markup = $this->getFeaturedImage( $this->post->ID ); $str = str_replace('[image]', $markup, $str); } // Featured image URL if(stripos($str, '[image-url]') !== false) { $url = $this->getFeaturedImageURL( $this->post->ID ); $str = str_replace('[image-url]', $url, $str); } // Featured image thumbnail if(stripos($str, '[thumbnail]') !== false) { $markup = $this->getFeaturedImage( $this->post->ID, 'thumbnail' ); $str = str_replace('[thumbnail]', $markup, $str); } // Featured image thumbnail URL if(stripos($str, '[thumbnail-url]') !== false) { $url = $this->getFeaturedImageURL( $this->post->ID, 'thumbnail' ); $str = str_replace('[thumbnail-url]', $url, $str); } // Title if(stripos($str, '[title]') !== false) { $str = str_replace('[title]', $this->getTitle($textlength), $str); } // Content if(stripos($str, '[content]') !== false) { $str = str_replace('[content]', $this->getContent($textlength), $str); } // Excerpt if(stripos($str, '[excerpt]') !== false) { $str = str_replace('[excerpt]', $this->getExcerpt($textlength), $str); } // Author nickname if(stripos($str, '[author]') !== false) { $str = str_replace('[author]', $this->getAuthor(true), $str); } // Author display name if(stripos($str, '[author-name]') !== false) { $str = str_replace('[author-name]', $this->getAuthor(false), $str); } // Author avatar image if(stripos($str, '[author-avatar]') !== false) { $str = str_replace('[author-avatar]', $this->getAuthorImage( $this->post ), $str); } // Author ID if(stripos($str, '[author-id]') !== false) { $str = str_replace('[author-id]', $this->post->post_author, $str); } // Category list if(stripos($str, '[categories]') !== false) { $str = str_replace('[categories]', $this->getCategoryList(), $str); } // Tags list if(stripos($str, '[tags]') !== false) { $str = str_replace('[tags]', $this->getTagList(), $str); } // Number of comments if(stripos($str, '[comments]') !== false) { $str = str_replace('[comments]', $this->post->comment_count, $str); } // Meta if(stripos($str, '[meta:') !== false) { $matches = []; preg_match_all('/\[meta:\w(?:[-\w]*\w)?]/', $str, $matches); foreach($matches[0] as $match) { $meta = str_replace('[meta:', '', $match); $meta = str_replace(']', '', $meta); $meta = get_post_meta($this->post->ID, $meta, true); $str = str_replace($match, $meta, $str); } } return $str; } /** * Returns the lastly selected post's title * @return string The title of the post */ public function getTitle($length = 0) { if(!is_object($this->post)) { return false; } $title = $this->post->post_title; if( ! empty( $length ) ) { if( function_exists('mb_substr') ) { $title = mb_substr($title, 0, $length); } else { $title = substr($title, 0, $length); } } return $title; } /** * Returns the lastly selected post's excerpt * @return string The excerpt of the post */ public function getExcerpt($textlength = 0) { global $post; $post = $this->post; setup_postdata($post); $excerpt = get_the_excerpt(); wp_reset_postdata(); if( ! empty( $excerpt ) && ! empty( $textlength ) ) { if( function_exists('mb_substr') ) { $excerpt = mb_substr( $excerpt, 0, $textlength ); } else { $excerpt = substr( $excerpt, 0, $textlength ); } } return $excerpt; } public function getAuthor($nick = true) { $key = $nick ? 'user_nicename' : 'display_name'; if(is_object($this->post)) { return get_userdata($this->post->post_author)->$key; } else { return false; } } public function getAuthorImage( $post = null ) { if( ! empty( $post ) ) { $post = $this->post; } if( function_exists( 'get_avatar_url' ) ) { return '<img src="'.get_avatar_url( $post->post_author, [ 'size' => 256 ]).'">'; } return ''; } public function getCategoryList( $post = null ) { if(!empty($post)) { $post = $this->post; } if(has_category(false, $this->post->ID)) { $cats = wp_get_post_categories($this->post->ID); foreach($cats as $val) { $cat = get_category($val); $list[] = '<a href="'.get_category_link($val).'">'.$cat->name.'</a>'; } return '<div>'.implode(', ', $list).'</div>'; } else { return ''; } } public function getTagList( $post = null ) { if(!empty($post)) { $post = $this->post; } if(has_tag(false, $this->post->ID)) { $tags = wp_get_post_tags($this->post->ID); foreach($tags as $val) { $list[] = '<a href="/tag/'.$val->slug.'/">'.$val->name.'</a>'; } return '<div>'.implode(', ', $list).'</div>'; } else { return ''; } } /** * Returns a subset of the post's content, * or the first paragraph if isn't specified * @param integer $length The subset's length * @return string The content */ public function getContent( $length = false ) { if( ! is_object( $this->post ) ) { return false; } $content = $this->post->post_content; if( ! empty( $length ) ) { if( function_exists( 'mb_substr' ) ) { $content = mb_substr( wp_strip_all_tags( $content ), 0, $length); } else { $content = substr( wp_strip_all_tags( $content ), 0, $length); } } return nl2br($content); } /** * Returns the featured image URL for the specified post ID. * Defaults to an empty GIF on error. * * @param integer $postID The ID of the post * @param string $size Attachment image size * @return string Featured image URL */ public function getFeaturedImageURL( $postID = 0, $size = 'full' ) { if( function_exists('get_post_thumbnail_id') ) { $attachmentID = get_post_thumbnail_id( $postID ); $attachment = wp_get_attachment_image_src( $attachmentID, $size ); if( ! empty( $attachment[0] ) ) { return $attachment[0]; } } return LS_ROOT_URL . '/static/admin/img/blank.gif'; } /** * Returns the featured image HTML element markup for the specified post ID. * Defaults to empty string on error. * * @param integer $postID The ID of the post * @param string $size Attachment image size * @return string <img> HTML markup or empty string on error */ public function getFeaturedImage( $postID = 0, $size = 'full' ) { if( function_exists('get_post_thumbnail_id') ) { $attachmentID = get_post_thumbnail_id( $postID ); $attachment = wp_get_attachment_image( $attachmentID, $size ); return $attachment; } return ''; } }