| 1 |
<?php |
| 2 |
/** |
| 3 |
* The file of query insides. |
| 4 |
* |
| 5 |
* @package Smart_Post_Show |
| 6 |
* @subpackage Smart_Post_Show/public |
| 7 |
* |
| 8 |
* @since 2.0.0 |
| 9 |
*/ |
| 10 |
|
| 11 |
// If this file is called directly, abort. |
| 12 |
if ( ! defined( 'WPINC' ) ) { |
| 13 |
die; |
| 14 |
} |
| 15 |
/** |
| 16 |
* Post all html method. |
| 17 |
* |
| 18 |
* @since 2.0.0 |
| 19 |
*/ |
| 20 |
class SP_PC_HTML { |
| 21 |
|
| 22 |
/** |
| 23 |
* Section title |
| 24 |
* |
| 25 |
* @param int $pcp_id Shortcode id. |
| 26 |
* @return void |
| 27 |
*/ |
| 28 |
public static function pcp_section_title( $pcp_id ) { |
| 29 |
$section_title_text = apply_filters( 'pcp_section_title_text', get_the_title( $pcp_id ) ); |
| 30 |
$section_title = apply_filters( 'pcp_filter_section_title', sprintf( '<h2 class="pcp-section-title">%1$s</h2>', $section_title_text ), $section_title_text ); |
| 31 |
echo wp_kses_post( $section_title ); |
| 32 |
} |
| 33 |
|
| 34 |
/** |
| 35 |
* Post title html. |
| 36 |
* |
| 37 |
* @param array $sorter post content option array. |
| 38 |
* @param string $layout layout preset. |
| 39 |
* @return void |
| 40 |
*/ |
| 41 |
public static function pcp_post_title( $sorter, $layout, $options ) { |
| 42 |
|
| 43 |
$_meta_settings = SP_PC_Functions::pcp_metabox_value( 'pcp_post_meta', $sorter ); |
| 44 |
$post_meta_fields = SP_PC_Functions::pcp_metabox_value( 'pcp_post_meta_group', $_meta_settings ); |
| 45 |
$show_post_meta = SP_PC_Functions::pcp_metabox_value( 'show_post_meta', $_meta_settings, true ); |
| 46 |
$pcp_page_link_type = SP_PC_Functions::pcp_metabox_value( 'pcp_page_link_type', $options ); |
| 47 |
$pcp_link_rel = SP_PC_Functions::pcp_metabox_value( 'pcp_link_rel', $options ); |
| 48 |
$pcp_link_rel_text = ''; |
| 49 |
if ( $pcp_link_rel ) { |
| 50 |
$pcp_link_rel_text = "rel='nofollow'"; |
| 51 |
} |
| 52 |
$pcp_link_target = SP_PC_Functions::pcp_metabox_value( 'pcp_link_target', $options ); |
| 53 |
if ( is_array( $post_meta_fields ) && 'accordion_layout' !== $layout && $show_post_meta ) { |
| 54 |
foreach ( $post_meta_fields as $each_meta ) { |
| 55 |
if ( 'taxonomy' === $each_meta['select_post_meta'] ) { |
| 56 |
$taxonomy = $each_meta['post_meta_taxonomy']; |
| 57 |
$meta_position = $each_meta['pcp_meta_position']; |
| 58 |
if ( 'above_title' === $meta_position ) { |
| 59 |
$terms = get_the_term_list( get_the_ID(), $taxonomy, '', ' ' ); |
| 60 |
if ( $terms ) { |
| 61 |
?> |
| 62 |
<div class="pcp-category above_title <?php echo $taxonomy; ?>"> |
| 63 |
<?php echo $terms; ?> |
| 64 |
</div> |
| 65 |
<?php |
| 66 |
}; |
| 67 |
} |
| 68 |
} |
| 69 |
} |
| 70 |
} |
| 71 |
|
| 72 |
$post_title_setting = isset( $sorter['pcp_post_title'] ) ? $sorter['pcp_post_title'] : ''; |
| 73 |
$show_post_title = SP_PC_Functions::pcp_metabox_value( 'show_post_title', $post_title_setting ); |
| 74 |
|
| 75 |
$pcp_post_title = get_the_title( get_the_ID() ); |
| 76 |
|
| 77 |
if ( $show_post_title && ! empty( $pcp_post_title ) ) { |
| 78 |
// Post Title Settings. |
| 79 |
$post_title_tag = SP_PC_Functions::pcp_metabox_value( 'post_title_tag', $post_title_setting, 'h2' ); |
| 80 |
$allowed_html_tags = array( |
| 81 |
'em' => array(), |
| 82 |
'strong' => array(), |
| 83 |
'sup' => array(), |
| 84 |
'i' => array(), |
| 85 |
'small' => array(), |
| 86 |
'del' => array(), |
| 87 |
'br' => array(), |
| 88 |
'ins' => array(), |
| 89 |
'span' => array( |
| 90 |
'style' => array(), |
| 91 |
'class' => array(), |
| 92 |
), |
| 93 |
); |
| 94 |
?> |
| 95 |
<<?php echo esc_attr( $post_title_tag ); ?> class="sp-pcp-title"> |
| 96 |
<?php if ( 'none' === $pcp_page_link_type ) { ?> |
| 97 |
<?php echo sprintf( '<a %2$s>%1$s</a>', wp_kses( trim( $pcp_post_title ), $allowed_html_tags ), esc_attr( $pcp_link_rel_text ) ); ?> |
| 98 |
<?php } else { ?> |
| 99 |
<?php echo sprintf( '<a href="%1$s" %3$s target="%4$s">%2$s</a>', esc_url( get_the_permalink() ), wp_kses( trim( $pcp_post_title ), $allowed_html_tags ), esc_attr( $pcp_link_rel_text ), esc_attr( $pcp_link_target ) ); ?> |
| 100 |
<?php } ?> |
| 101 |
</<?php echo esc_attr( $post_title_tag ); ?>> |
| 102 |
<?php |
| 103 |
} |
| 104 |
} |
| 105 |
|
| 106 |
/** |
| 107 |
* Show Post Content html. |
| 108 |
* |
| 109 |
* @param array $sorter The field ID array. |
| 110 |
* @param array $options options. |
| 111 |
* @return void |
| 112 |
*/ |
| 113 |
public static function pcp_content_html( $sorter, $options ) { |
| 114 |
$post_content_setting = SP_PC_Functions::pcp_metabox_value( 'pcp_post_content', $sorter ); |
| 115 |
$show_post_content = SP_PC_Functions::pcp_metabox_value( 'show_post_content', $post_content_setting ); |
| 116 |
if ( $show_post_content ) { |
| 117 |
$pcp_content_type = SP_PC_Functions::pcp_metabox_value( 'post_content_type', $post_content_setting ); |
| 118 |
?> |
| 119 |
<div class="sp-pcp-post-content"> |
| 120 |
<?php |
| 121 |
echo wp_kses_post( SP_PC_Functions::pcp_content( $post_content_setting, $pcp_content_type ) ); |
| 122 |
wp_kses( |
| 123 |
self::pcp_readmore( $post_content_setting, $pcp_content_type, $options ), |
| 124 |
array( |
| 125 |
'a' => array( |
| 126 |
'href' => array(), |
| 127 |
'title' => array(), |
| 128 |
), |
| 129 |
'em' => array(), |
| 130 |
'strong' => array(), |
| 131 |
) |
| 132 |
); |
| 133 |
?> |
| 134 |
</div> |
| 135 |
<?php |
| 136 |
} |
| 137 |
} |
| 138 |
|
| 139 |
/** |
| 140 |
* Read more function |
| 141 |
* |
| 142 |
* @param array $view_options Read more options array. |
| 143 |
* @param array $content_type The content type. |
| 144 |
* @param array $options The parent of this field. |
| 145 |
*/ |
| 146 |
public static function pcp_readmore( $view_options, $content_type, $options ) { |
| 147 |
$show_read_more = isset( $view_options['show_read_more'] ) ? $view_options['show_read_more'] : ''; |
| 148 |
if ( ! $show_read_more || 'full_content' === $content_type ) { |
| 149 |
return ''; |
| 150 |
} |
| 151 |
// $read_more_type = isset( $view_options['read_more_type'] ) ? $view_options['read_more_type'] : ''; |
| 152 |
$pcp_read_label = isset( $view_options['pcp_read_label'] ) ? $view_options['pcp_read_label'] : ''; |
| 153 |
$pcp_page_link_type = SP_PC_Functions::pcp_metabox_value( 'pcp_page_link_type', $options ); |
| 154 |
$pcp_link_rel = SP_PC_Functions::pcp_metabox_value( 'pcp_link_rel', $options ); |
| 155 |
$pcp_link_rel_text = ''; |
| 156 |
if ( $pcp_link_rel ) { |
| 157 |
$pcp_link_rel_text = "rel='nofollow'"; |
| 158 |
} |
| 159 |
$readmore_target = SP_PC_Functions::pcp_metabox_value( 'pcp_link_target', $options ); |
| 160 |
?> |
| 161 |
<div class="sp-pcp-readmore"> |
| 162 |
<?php if ( 'none' === $pcp_page_link_type ) { ?> |
| 163 |
<a class="pcp-readmore-link" target="<?php echo esc_attr( $readmore_target ); ?>" <?php echo esc_html( $pcp_link_rel_text ); ?>> |
| 164 |
<?php } else { ?> |
| 165 |
<a class="pcp-readmore-link" target="<?php echo esc_attr( $readmore_target ); ?>" href="<?php the_permalink(); ?>" <?php echo esc_html( $pcp_link_rel_text ); ?>> |
| 166 |
<?php } ?> |
| 167 |
<?php echo esc_html( $pcp_read_label ); ?> </a> |
| 168 |
</div> |
| 169 |
<?php |
| 170 |
} |
| 171 |
|
| 172 |
/** |
| 173 |
* Post thumb HTML. |
| 174 |
* |
| 175 |
* @param array $sorter post content option array. |
| 176 |
* @param int $scode_id Shortcode ID. |
| 177 |
* @param int $slide_id The slide/post ID. |
| 178 |
* @param array $options The slide/post ID. |
| 179 |
* @return void |
| 180 |
*/ |
| 181 |
public static function pcp_post_thumb_html( $sorter, $scode_id, $slide_id, $options ) { |
| 182 |
$_post_thumb_setting = SP_PC_Functions::pcp_metabox_value( 'pcp_post_thumb', $sorter ); |
| 183 |
$pcp_page_link_type = SP_PC_Functions::pcp_metabox_value( 'pcp_page_link_type', $options ); |
| 184 |
$pcp_link_rel = SP_PC_Functions::pcp_metabox_value( 'pcp_link_rel', $options ); |
| 185 |
$pcp_link_rel_text = ''; |
| 186 |
if ( $pcp_link_rel ) { |
| 187 |
$pcp_link_rel_text = "rel='nofollow'"; |
| 188 |
} |
| 189 |
$pcp_link_target = SP_PC_Functions::pcp_metabox_value( 'pcp_link_target', $options ); |
| 190 |
if ( SP_PC_Functions::pcp_metabox_value( 'post_thumb_show', $_post_thumb_setting ) ) { |
| 191 |
$pcp_image_attr = SP_PC_Functions::pcp_sized_thumb( $_post_thumb_setting, $slide_id ); |
| 192 |
$thumb_url = $pcp_image_attr['src']; |
| 193 |
$alter_text = SP_PC_Functions::pcp_thumb_alter_text( $slide_id ); |
| 194 |
if ( ! empty( $thumb_url ) ) { |
| 195 |
?> |
| 196 |
<div class="pcp-post-thumb-wrapper"> |
| 197 |
<div class="sp-pcp-post-thumb-area"> |
| 198 |
<?php if ( 'none' === $pcp_page_link_type ) { ?> |
| 199 |
<a class="sp-pcp-thumb" <?php echo esc_attr( $pcp_link_rel_text ); ?>> |
| 200 |
<?php } else { ?> |
| 201 |
<a class="sp-pcp-thumb" href="<?php the_permalink(); ?>" target="<?php echo esc_attr( $pcp_link_target ); ?>" <?php echo esc_attr( $pcp_link_rel_text ); ?>> |
| 202 |
<?php } ?> |
| 203 |
<img src="<?php echo esc_url( $thumb_url ); ?>" width="<?php echo esc_attr( $pcp_image_attr['width'] ); ?>" height="<?php echo esc_attr( $pcp_image_attr['height'] ); ?>" alt="<?php echo esc_attr( $alter_text ); ?>"> |
| 204 |
</a> |
| 205 |
</div> |
| 206 |
</div> |
| 207 |
<?php |
| 208 |
} |
| 209 |
} |
| 210 |
} |
| 211 |
|
| 212 |
/** |
| 213 |
* Post meta HTML |
| 214 |
* |
| 215 |
* @param array $sorter post content option array. |
| 216 |
* @param int $visitor_count views count. |
| 217 |
* @return void |
| 218 |
*/ |
| 219 |
public static function pcp_post_meta_html( $sorter ) { |
| 220 |
$_meta_settings = SP_PC_Functions::pcp_metabox_value( 'pcp_post_meta', $sorter ); |
| 221 |
$post_meta_fields = SP_PC_Functions::pcp_metabox_value( 'pcp_post_meta_group', $_meta_settings ); |
| 222 |
$show_post_meta = SP_PC_Functions::pcp_metabox_value( 'show_post_meta', $_meta_settings, true ); |
| 223 |
$_meta_separator = SP_PC_Functions::pcp_metabox_value( 'meta_separator', $_meta_settings ); |
| 224 |
if ( $post_meta_fields && $show_post_meta ) { |
| 225 |
?> |
| 226 |
<div class="sp-pcp-post-meta"> |
| 227 |
<?php |
| 228 |
echo apply_filters( 'pcp_post_meta_wrapper_start', '<ul>' ); |
| 229 |
SP_PC_Functions::pcp_get_post_meta( $post_meta_fields, $_meta_separator ); |
| 230 |
echo apply_filters( 'pcp_post_meta_wrapper_end', '</ul>' ); |
| 231 |
?> |
| 232 |
</div> |
| 233 |
<?php |
| 234 |
} |
| 235 |
} |
| 236 |
|
| 237 |
/** |
| 238 |
* Post content with thumb. |
| 239 |
* |
| 240 |
* @param array $sorter post sorting option. |
| 241 |
* @param string $layout Layout preset. |
| 242 |
* @param int $scode_id The Shortcode ID. |
| 243 |
* @param object $post The Post object. |
| 244 |
* @return void |
| 245 |
*/ |
| 246 |
public static function pcp_post_content_with_thumb( $sorter, $layout, $scode_id, $post, $options ) { |
| 247 |
if ( $sorter ) { |
| 248 |
foreach ( $sorter as $style_key => $style_value ) { |
| 249 |
switch ( $style_key ) { |
| 250 |
case 'pcp_post_thumb': |
| 251 |
self::pcp_post_thumb_html( $sorter, $scode_id, $post->ID, $options ); |
| 252 |
break; |
| 253 |
case 'pcp_post_title': |
| 254 |
self::pcp_post_title( $sorter, $layout, $options ); |
| 255 |
break; |
| 256 |
case 'pcp_post_content': |
| 257 |
self::pcp_content_html( $sorter, $options ); |
| 258 |
break; |
| 259 |
case 'pcp_post_meta': |
| 260 |
self::pcp_post_meta_html( $sorter ); |
| 261 |
break; |
| 262 |
} |
| 263 |
} |
| 264 |
} |
| 265 |
} |
| 266 |
|
| 267 |
/** |
| 268 |
* Post content without thumb. |
| 269 |
* |
| 270 |
* @param array $sorter post sorting option. |
| 271 |
* @param string $layout Layout preset. |
| 272 |
* @param object $post visitor number. |
| 273 |
* @return void |
| 274 |
*/ |
| 275 |
public static function pcp_post_content_without_thumb( $sorter, $layout, $post, $options ) { |
| 276 |
if ( $sorter ) { |
| 277 |
foreach ( $sorter as $style_key => $style_value ) { |
| 278 |
switch ( $style_key ) { |
| 279 |
case 'pcp_post_title': |
| 280 |
self::pcp_post_title( $sorter, $layout, $options ); |
| 281 |
break; |
| 282 |
case 'pcp_post_content': |
| 283 |
self::pcp_content_html( $sorter, $options ); |
| 284 |
break; |
| 285 |
case 'pcp_post_meta': |
| 286 |
self::pcp_post_meta_html( $sorter ); |
| 287 |
break; |
| 288 |
} |
| 289 |
} |
| 290 |
} |
| 291 |
} |
| 292 |
|
| 293 |
/** |
| 294 |
* Pagination function |
| 295 |
* |
| 296 |
* @param array $loop Query array. |
| 297 |
* @param array $upper_id Fields upper id. |
| 298 |
* @param array $paged The pagination type. |
| 299 |
* @param array $on_screen screen type. |
| 300 |
*/ |
| 301 |
public static function pcp_pagination_bar( $loop, $upper_id, $paged = null, $on_screen = null ) { |
| 302 |
$view_options = get_post_meta( $upper_id, 'sp_pcp_view_options', true ); |
| 303 |
// $posts_found; |
| 304 |
$posts_found = $loop->found_posts; |
| 305 |
$post_offset = isset( $view_options['pcp_post_offset'] ) ? $view_options['pcp_post_offset'] : 0; |
| 306 |
$post_limit = isset( $view_options['pcp_post_limit'] ) ? $view_options['pcp_post_limit'] : ''; |
| 307 |
$post_limit = ( $post_limit > 0 && $posts_found > $post_limit ) ? $post_limit : $posts_found; |
| 308 |
$post_per_page = isset( $view_options['post_per_page'] ) ? $view_options['post_per_page'] : ''; |
| 309 |
$post_per_page = ( $post_per_page > $post_limit ) ? $post_limit : $post_per_page; |
| 310 |
// Post display settings. |
| 311 |
$pagination_type = isset( $view_options['post_pagination_type'] ) ? $view_options['post_pagination_type'] : ''; |
| 312 |
$post_limit = (int) $post_limit; |
| 313 |
if ( $post_limit < 1 ) { |
| 314 |
$pages = 0; |
| 315 |
} else { |
| 316 |
$pages = SP_PC_Functions::pcp_max_pages( $post_limit, $post_per_page ); |
| 317 |
} |
| 318 |
$big = 999999999; // need an unlikely integer. |
| 319 |
if ( $pages > 1 ) { |
| 320 |
$page_current = max( 1, get_query_var( 'paged' ) ); |
| 321 |
$page_links = paginate_links( |
| 322 |
array( |
| 323 |
'base' => str_replace( $big, '%#%', esc_url( get_pagenum_link( $big ) ) ), |
| 324 |
'format' => '?paged=%#%', |
| 325 |
'current' => $page_current, |
| 326 |
'total' => $pages, |
| 327 |
'show_all' => true, |
| 328 |
'prev_next' => true, |
| 329 |
'type' => 'array', |
| 330 |
'prev_text' => '<i class="fa fa-angle-left"></i>', |
| 331 |
'next_text' => '<i class="fa fa-angle-right"></i>', |
| 332 |
) |
| 333 |
); |
| 334 |
echo implode( $page_links ); |
| 335 |
} |
| 336 |
} |
| 337 |
} |
| 338 |
|