get_settings_for_display(); } $html = ''; $page_id = $settings['eael_facebook_feed_page_id']; $token = $settings['eael_facebook_feed_access_token']; $source = $settings['eael_facebook_feed_data_source']; $display_comment = isset( $settings['eael_facebook_feed_comments'] ) ? $settings['eael_facebook_feed_comments'] : ''; if ( empty( $page_id ) || empty( $token ) ) { return; } $key = 'eael_facebook_feed_' . md5( str_rot13( str_replace( '.', '', $source . $page_id . $token ) ) . $settings['eael_facebook_feed_cache_limit'] ); $facebook_data = get_transient( $key ); if ( $facebook_data == false ) { $facebook_data = wp_remote_retrieve_body( wp_remote_get( $this->get_url($page_id, $token, $source, $display_comment), [ 'timeout' => 70, ] ) ); $facebook_data = json_decode( $facebook_data, true ); if ( isset( $facebook_data['data'] ) ) { set_transient( $key, $facebook_data, ( $settings['eael_facebook_feed_cache_limit'] * MINUTE_IN_SECONDS ) ); } } if ( ! isset( $facebook_data['data'] ) ) { return; } $facebook_data = $facebook_data['data']; switch ( $settings['eael_facebook_feed_sort_by'] ) { case 'least-recent': $facebook_data = array_reverse( $facebook_data ); break; } $items = array_splice( $facebook_data, ( $page * $settings['eael_facebook_feed_image_count']['size'] ), $settings['eael_facebook_feed_image_count']['size'] ); $bg_style = isset( $settings['eael_facebook_feed_image_render_type'] ) && $settings['eael_facebook_feed_image_render_type'] == 'cover' ? "background-size: cover;background-position: center;background-repeat: no-repeat;" : "background-size: 100% 100%;background-repeat: no-repeat;"; foreach ( $items as $item ) { $t = 'eael_facebook_feed_message_max_length'; // short it $limit = isset( $settings[ $t ] ) && isset( $settings[ $t ]['size'] ) ? $settings[ $t ]['size'] : null; $message = wp_trim_words( ( isset( $item['message'] ) ? $item['message'] : ( isset( $item['story'] ) ? $item['story'] : '' ) ), $limit, '...' ); $photo = ( isset( $item['full_picture'] ) ? esc_url( $item['full_picture'] ) : '' ); $likes = ( isset( $item['reactions'] ) ? $item['reactions']['summary']['total_count'] : 0 ); $comments = ( isset( $item['comments'] ) ? $item['comments']['summary']['total_count'] : 0 ); if ( empty( $photo ) ) { $photo = isset( $item['attachments']['data'][0]['media']['image']['src'] ) ? esc_url( $item['attachments']['data'][0]['media']['image']['src'] ) : $photo; } if ( $settings['eael_facebook_feed_layout'] == 'card' ) { $item_form_name = ! empty( $item['from']['name'] ) ? $item['from']['name'] : ''; $current_page_id = ! empty( $item['from']['id'] ) ? $item['from']['id'] : $page_id; $html .= '
'; if ( $settings['eael_facebook_feed_message'] && ! empty( $message ) ) { $html .= ''; } if ( ! empty( $photo ) || isset( $item['attachments']['data'] ) ) { $html .= ''; } if ( $settings['eael_facebook_feed_likes'] || $settings['eael_facebook_feed_comments'] ) { $html .= ''; } $html .= '
'; } else { $html .= '
'; if ( $settings['eael_facebook_feed_likes'] || $settings['eael_facebook_feed_comments'] ) { $html .= ''; } $html .= '
'; } } if ( isset( $_REQUEST['action'] ) && $_REQUEST['action'] == 'facebook_feed_load_more' ) { $data = [ 'num_pages' => ceil( count( $facebook_data ) / $settings['eael_facebook_feed_image_count']['size'] ), 'html' => $html, ]; while ( ob_get_status() ) { ob_end_clean(); } if ( function_exists( 'gzencode' ) ) { $response = gzencode( wp_json_encode( $data ) ); header( 'Content-Type: application/json; charset=utf-8' ); header( 'Content-Encoding: gzip' ); header( 'Content-Length: ' . strlen( $response ) ); printf( '%1$s', $response ); } else { wp_send_json( $data ); } wp_die(); } return $html; } public function eael_str_check( $textData = '' ) { $stringText = ''; if ( strlen( $textData ) > 5 ) { $explodeText = explode( ' ', trim( $textData ) ); for ( $st = 0; $st < count( $explodeText ); $st ++ ) { $pos = stripos( trim( $explodeText[ $st ] ), '#' ); $pos1 = stripos( trim( $explodeText[ $st ] ), '@' ); $poshttp = stripos( trim( $explodeText[ $st ] ), 'http' ); $poshttps = stripos( trim( $explodeText[ $st ] ), 'https' ); if ( $pos !== false ) { $stringText .= ' ' . esc_html( $explodeText[ $st ] ) . ' '; } elseif ( $pos1 !== false ) { $stringText .= ' ' . esc_html( $explodeText[ $st ] ) . ' '; } elseif ( $poshttp !== false || $poshttps !== false ) { $stringText .= ' ' . esc_html( $explodeText[ $st ] ) . ' '; } else { $stringText .= ' ' . $explodeText[ $st ]; } } } return $stringText; } /** * get_url * Build and return api endpoint based on source type * * @param string $page_id string * @param string $token string * @param string $source string * * @return string */ public function get_url( $page_id = '', $token = '', $source = 'posts', $display_comment = '' ) { $comment_count = $display_comment == 'yes' ? ',comments.summary(total_count)' : ''; $post_limit = apply_filters( 'eael_facebook_feed_post_limit', 99 ); $post_url = "https://graph.facebook.com/v8.0/{$page_id}/posts?fields=status_type,created_time,from,message,story,full_picture,permalink_url,attachments.limit(1){type,media_type,title,description,unshimmed_url,media}{$comment_count},reactions.summary(total_count)&limit={$post_limit}&access_token={$token}"; $feed_url = "https://graph.facebook.com/v8.0/{$page_id}/feed?fields=id,message,full_picture,status_type,created_time,attachments{title,description,type,url,media},from,permalink_url,shares,call_to_action{$comment_count},reactions.summary(total_count),privacy&access_token={$token}&limit={$post_limit}&locale=en_US"; if ( 'posts' === $source ) { return $post_url; } return $feed_url; } }