PluginProbe
WPCOM Member / 1.7.21
WPCOM Member v1.7.21
1.7.27 1.7.26 1.7.25 1.7.24 1.7.23 1.7.22 1.7.21 trunk 1.0.11 1.1.7 1.2.11 1.3.14 1.4.0 1.5.1.4 1.5.2.1 1.5.3.2 1.5.4 1.5.4.1 1.5.5 1.5.5.1 1.5.6 1.5.7 1.6.0 1.7.0 1.7.1 All 44 releases
wpcom-member / includes / required.php

required.php in WPCOM Member 1.7.21, at includes/required.php

164 lines 8.1 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php defined( 'ABSPATH' ) || exit;
2
3 // Pagenavi
4 if(!function_exists('wpcom_pagination')){
5 function wpcom_pagination( $range = 6, $args = [] ) {
6 global $paged, $wp_query, $page, $numpages, $multipage;
7 if ( ($args && $args['numpages'] > 1) || ( isset($multipage) && $multipage && is_singular() ) ) {
8 if($args) {
9 $page = isset($args['paged']) ? $args['paged'] : $page;
10 $numpages = isset($args['numpages']) ? $args['numpages'] : $numpages;
11 }
12 echo ' <ul class="pagination">';
13 $prev = $page - 1;
14 if ( $prev > 0 ) {
15 echo '<li class="prev">'. wpcom_link_page( $prev, $args ) . '</a></li>';
16 }
17
18 if($numpages > $range){
19 if($page < $range){
20 for($i = 1; $i <= ($range + 1); $i++){
21 echo $i==$page ? '<li class="active">' : '<li>';
22 echo wpcom_link_page($i, $args) . esc_html($i) . "</a></li>";
23 }
24 } elseif($page >= ($numpages - ceil(($range/2)))){
25 for($i = $numpages - $range; $i <= $numpages; $i++){
26 echo $i==$page ? '<li class="active">' : '<li>';
27 echo wpcom_link_page($i, $args) . esc_html($i) . "</a></li>";
28 }
29 } elseif($page >= $range && $page < ($numpages - ceil(($range/2)))){
30 for($i = ($page - ceil($range/2)); $i <= ($page + ceil(($range/2))); $i++){
31 echo $i==$page ? '<li class="active">' : '<li>';
32 echo wpcom_link_page($i, $args) . esc_html($i) . "</a></li>";
33 }
34 }
35 }else{
36 for ( $i = 1; $i <= $numpages; $i++ ) {
37 echo $i==$page ? '<li class="active">' : '<li>';
38 echo wpcom_link_page($i, $args) . esc_html($i) . "</a></li>";
39 }
40 }
41
42 $next = $page + 1;
43 if ( $next <= $numpages ) {
44 echo '<li class="next">'. wpcom_link_page($next, $args) . '</a></li>';
45 }
46 echo wpcom_pagination_form($args['paged_arg'] ?? 'page');
47 echo '</ul>';
48 }else if( ($max_page = $wp_query->max_num_pages) > 1 ){
49 echo ' <ul class="pagination">';
50 if(!$paged) $paged = 1;
51 echo '<li class="disabled"><span>'.esc_html($paged).' / '.esc_html($max_page).'</span></li>';
52 $prev = get_previous_posts_link('');
53 if($prev) echo '<li class="prev">'.wp_kses($prev, wpmx_allowed_html()).'</li>';
54 if($max_page > $range){
55 if($paged < $range){
56 for($i = 1; $i <= ($range + 1); $i++){
57 echo $i==$paged ? '<li class="active">' : '<li>';
58 echo '<a href="' . get_pagenum_link($i) .'">'.esc_html($i).'</a></li>';
59 }
60 } elseif($paged >= ($max_page - ceil(($range/2)))){
61 for($i = $max_page - $range; $i <= $max_page; $i++){
62 echo $i==$paged ? '<li class="active">' : '<li>';
63 echo '<a href="' . get_pagenum_link($i) .'">'.esc_html($i).'</a></li>';
64 }
65 } elseif($paged >= $range && $paged < ($max_page - ceil(($range/2)))){
66 for($i = ($paged - ceil($range/2)); $i <= ($paged + ceil(($range/2))); $i++){
67 echo $i==$paged ? '<li class="active">' : '<li>';
68 echo '<a href="' . get_pagenum_link($i) .'">'.esc_html($i).'</a></li>';
69 }
70 }
71 } else {
72 for($i = 1; $i <= $max_page; $i++){
73 echo $i==$paged ? '<li class="active">' : '<li>';
74 echo '<a href="' . get_pagenum_link($i) .'">'.esc_html($i).'</a></li>';
75 }
76 }
77 $next = get_next_posts_link('');
78 if($next) echo '<li class="next">'.wp_kses($next, wpmx_allowed_html()).'</li>';
79 echo wpcom_pagination_form('paged', true);
80 echo '</ul>';
81 }
82 }
83
84 function wpcom_link_page( $i, $args ) {
85 if(isset($args['url']) && $args['url']){
86 if ( (isset($args['paged_type']) && $args['paged_type'] === 'query') || '' == get_option( 'permalink_structure' ) ) {
87 $url = add_query_arg( isset($args['paged_arg']) && $args['paged_arg'] ? $args['paged_arg'] : 'page', $i, $args['url'] );
88 } else {
89 $url = trailingslashit( $args['url'] ) . user_trailingslashit( $i, 'single_paged' );
90 }
91 $url = '<a href="' . esc_url( $url ) . '" class="post-page-numbers">';
92 }else{
93 $url = _wp_link_page($i);
94 }
95 return wp_kses($url, wpmx_allowed_html());
96 }
97
98 function wpcom_pagination_form($name = 'paged', $search = false){
99 $search = $search && is_search() ? '<input type="hidden" name="s" value="' . get_search_query() . '">' : '';
100 return '<li class="pagination-go"><form method="get"><input class="pgo-input" type="text" name="' . esc_attr($name) . '" placeholder="' . _x('GO', '页码', WPMX_TD) . '" /><button class="pgo-btn" type="submit" aria-label="' . _x('GO', '页码', WPMX_TD) . '"></button></form></li>';
101 }
102
103 add_filter('previous_posts_link_attributes', 'wpcom_prev_posts_link_attr');
104 function wpcom_prev_posts_link_attr($attr){
105 return $attr.' class="prev"';
106 }
107 add_filter('next_posts_link_attributes', 'wpcom_next_posts_link_attr');
108 function wpcom_next_posts_link_attr($attr){
109 return $attr.' class="next"';
110 }
111 }
112
113 if(!function_exists('wpcom_empty_icon')){
114 function wpcom_empty_icon($type='post'){
115 return '<img class="empty-icon j-lazy" src="' . esc_url(WPMX_URI . 'images/empty-' . $type . '.svg') . '">';
116 }
117 }
118
119 if(!function_exists('wpcom_pre_handle_404')){
120 add_action('pre_handle_404', 'wpmx_pre_handle_404');
121 function wpmx_pre_handle_404($res){
122 global $wp_query, $wp_version;
123 if ( $wp_query->posts && version_compare($wp_version, '5.5') >= 0) {
124 $content_found = true;
125 if ( is_singular() ) {
126 $post = isset( $wp_query->post ) ? $wp_query->post : null;
127 // Only set X-Pingback for single posts that allow pings.
128 if ( $post && pings_open( $post ) && ! headers_sent() ) {
129 header( 'X-Pingback: ' . get_bloginfo( 'pingback_url', 'display' ) );
130 }
131 $paged = get_query_var( 'page' );
132 if ( $post && ! empty( $paged ) ) {
133 $shortcode_tags = array('wpcom_tags', 'wpcom-member');
134 preg_match_all( '@\[([^<>&/\[\]\x00-\x20=]++)@', $post->post_content, $matches );
135 $tagnames = array_intersect( $shortcode_tags, $matches[1] );
136
137 if ( empty($tagnames) ) {
138 $content_found = false;
139 }else if(in_array('wpcom_tags', $tagnames)){
140 preg_match( '/\[wpcom_tags[^\]]*\]/i', $post->post_content, $matches2 );
141 if(isset($matches2[0])){
142 $text = ltrim($matches2[0], '[wpcom_tags');
143 $text = rtrim($text, ']');
144 $atts = shortcode_parse_atts($text);
145 if(isset($atts['per_page']) && $atts['per_page']){ // 分页
146 $tax = isset($atts['taxonomy']) && $atts['taxonomy'] ? $atts['taxonomy'] : 'post_tag';
147 $max = wp_count_terms( $tax, array( 'hide_empty' => true ) );
148 $pages = ceil( $max / $atts['per_page'] );
149 if($pages<$paged) $content_found = false; // 页数�
150
151 }else{ // 未分页,则一页�
152 �部显示
153 $content_found = false;
154 }
155 }
156 }
157 }
158 }
159
160 if ( $content_found ) $res = true;
161 }
162 return $res;
163 }
164 }