Files
DESKTOP-GBA0BK8\Admin 7c8c8b1c76 first commit
2023-04-08 12:19:53 -04:00

366 lines
13 KiB
PHP

<?php
/**
* Child theme functions
*
* When using a child theme (see http://codex.wordpress.org/Theme_Development
* and http://codex.wordpress.org/Child_Themes), you can override certain
* functions (those wrapped in a function_exists() call) by defining them first
* in your child theme's functions.php file. The child theme's functions.php
* file is included before the parent theme's file, so the child theme
* functions would be used.
*
* Text Domain: oceanwp
* @link http://codex.wordpress.org/Plugin_API
*
*/
/**
* Load the parent style.css file
*
* @link http://codex.wordpress.org/Child_Themes
*/
function oceanwp_child_enqueue_parent_style() {
// Dynamically get version number of the parent stylesheet (lets browsers re-cache your stylesheet when you update your theme)
$theme = wp_get_theme( 'OceanWP' );
$version = $theme->get( 'Version' );
// Load the stylesheet
wp_enqueue_style( 'child-style', get_stylesheet_directory_uri() . '/style.css', array( 'oceanwp-style' ), $version );
}
add_action( 'wp_enqueue_scripts', 'oceanwp_child_enqueue_parent_style' );
/**
* Link custom javascript file
*
* @return void
*/
function my_custom_scripts() {
wp_enqueue_script( 'custom-js', get_stylesheet_directory_uri() . '/app.js', array( 'jquery' ),'',true );
}
add_action( 'wp_enqueue_scripts', 'my_custom_scripts' );
require_once 'custom-elementor.php';
require_once 'widgets/float-widget-recent-post.php';
/**
* Enqueue scripts and styles.
*/
function float_scripts() {
wp_enqueue_script( 'custom-js' );
wp_localize_script('custom-js', 'ajax_object', array('ajax_url' => admin_url( 'admin-ajax.php'), 'google_client_id' => defined("GOOGLE_CLIENT_APP_ID") ? GOOGLE_CLIENT_APP_ID : "343605975098-i4p86p4la6lpff0rmsq3mg36vi9do9rb.apps.googleusercontent.com" ));
wp_localize_script('custom-js', 'contact_settings', array(
'sg_contact' => defined("SG_CONTACT_LIST") ? SG_CONTACT_LIST : "f6ff7833-d6cf-425e-a426-395ac201b794",
'us_contact' => defined("US_CONTACT_LIST") ? US_CONTACT_LIST : "a646ee53-dfec-4a6a-a0c3-102c6840df06",
'default_list' => defined("DEFAULT_CONTACT_LIST") ? DEFAULT_CONTACT_LIST : "6e36b912-7cc3-4fb2-ba50-a664fbefb11b"
));
}
add_action( 'wp_enqueue_scripts', 'float_scripts' );
function get_user_location() {
$ip = get_user_ip();
$result = [
'country'=>'',
'city'=>'',
'timezone' => 'Asia/Singapore',
'region_name'=>'',
'country_code'=>'',
'lat'=>'',
'lng'=>''
];
$ip_data = @json_decode(file_get_contents('http://www.geoplugin.net/json.gp?ip='.$ip));
if($ip_data && $ip_data->geoplugin_countryName != null){
$result['country'] = $ip_data->geoplugin_countryName;
$result['city'] = $ip_data->geoplugin_city;
$result['timezone'] = $ip_data->geoplugin_timezone;
$result['region_name'] = $ip_data->geoplugin_region;
$result['country_code'] = $ip_data->geoplugin_countryCode;
$result['lat'] = $ip_data->geoplugin_latitude;
$result['lng'] = $ip_data->geoplugin_longitude;
}
return $result;
}
function get_user_ip() {
$client = @$_SERVER['HTTP_CLIENT_IP'];
$forward = @$_SERVER['HTTP_X_FORWARDED_FOR'];
$remote = @$_SERVER['REMOTE_ADDR'];
if(filter_var($client, FILTER_VALIDATE_IP)){
$ip = $client;
}elseif(filter_var($forward, FILTER_VALIDATE_IP)){
$ip = $forward;
}else{
$ip = $remote;
}
return $ip;
}
/**
* set Popular Posts by Views
*/
function float_set_post_views($postID) {
$count_key = 'float_post_views_count';
$count = get_post_meta($postID, $count_key, true);
if (empty($count)) {
delete_post_meta($postID, $count_key);
add_post_meta($postID, $count_key, 1);
} else {
$count++;
update_post_meta($postID, $count_key, $count);
}
}
function get_latest_articles($request) {
$limit = isset($_GET['limit']) ? intval(trim($_GET['limit'])) : 10;
$page = isset($_GET['page']) ? intval(trim($_GET['page'])) : 1;
if (!isset($limit) || !is_int($limit) || $limit <= 0) {
$limit = 10; // Set limit to by 10 as default
}
if (!isset($page) || !is_int($page) || $page <= 0) {
$page = 1; // Set default page
}
$query = new WP_Query( array(
'post_type' => 'post',
'post_status' => 'publish',
'ignore_sticky_posts' => 1,
'posts_per_page' => $limit,
'paged' => $page,
'orderby' => 'date',
'order' => 'DESC'
) );
if ( !$query->have_posts() ) {
return new WP_Error( 'empty_post', 'there is no post ', array('status' => 404) );
}
// add meta to post
$newPost = array();
foreach ( $query->posts as $key => $post ) {
add_meta_value_to_posts( $post );
array_push( $newPost, $post );
}
wp_reset_postdata();
// Add co-authors to post if exists
foreach ( $newPost as $post ) {
$co_authors = get_coauthors( $post->ID );
$result = [];
foreach ( $co_authors as $co_author ) {
if (get_class($co_author) !== 'WP_User') {
array_push($result, $co_author->display_name);
continue;
}
array_push($result, $co_author->data->display_name);
}
if ( !empty($result) ) {
$post->co_authors = $result;
}
}
$response = new WP_REST_Response( $newPost );
$response->set_status(200);
return $response;
}
function get_article_by_id($request) {
$post_id = isset($request['id']) && intval($request['id']) ? intval($request['id']) : NULL;
if (empty($post_id)) {
return new WP_Error( 'error', 'missing post id params ', array('status' => 400) );
}
$post = get_post( $post_id );
if (empty($post)) {
return new WP_Error( 'empty_post', 'there is no post ', array('status' => 404) );
}
add_meta_value_to_posts( $post );
// Add co-authors to post if exists
$co_authors = get_coauthors( $post->ID );
$result = [];
foreach ( $co_authors as $co_author ) {
if (get_class($co_author) !== 'WP_User') {
array_push($result, $co_author->display_name);
continue;
}
array_push($result, $co_author->data->display_name);
}
if ( !empty($result) ) {
$post->co_authors = $result;
}
$response = new WP_REST_Response($post);
$response->set_status(200);
return $response;
}
add_action('rest_api_init', function () {
register_rest_route( 'float/v1', 'latest-articles',array(
'methods' => 'GET',
'callback' => 'get_latest_articles',
'permission_callback' => '__return_true'
));
register_rest_route( 'float/v1', 'articles/(?P<id>\d+)',array(
'methods' => 'GET',
'callback' => 'get_article_by_id',
'permission_callback' => '__return_true'
));
});
/**
* add more menu item
*/
function add_signup_link( $items, $args ) {
if ($args->theme_location == 'main_menu') {
$items .= '<li class="menu-item menu-item-type-custom menu-item-object-custom"><a class="menu-link" role="button" data-toggle="modal" data-target="#signupModal" href="javascript:void(0)">Sign up</a></li>';
}
return $items;
}
add_filter( 'wp_nav_menu_items', 'add_signup_link', 10, 2 );
/**
* Add meta tags for marketing
*
* @return void
*/
function add_meta_tags() {
global $post;
if ( is_single() ) {
$des_post = strip_tags( $post->post_content );
$des_post = strip_shortcodes( $des_post );
$des_post = str_replace( array("\n", "\r", "\t"), ' ', $des_post );
$des_post = trim( $des_post );
$des_post = mb_substr( $des_post, 0, 300, 'utf8' );
echo "\n" . '<meta name="description" content="' . $des_post . '" />' . "\n";
echo '<meta property="og:title" content="' . $post->post_title . '" />' . "\n";
echo '<meta property="og:description" content="' . $des_post . '" />' . "\n";
echo '<meta property="og:type" content="article">' . "\n";
echo '<meta property="og:image" content="' . get_the_post_thumbnail_url($post->ID) . '">' . "\n";
echo '<meta property="og:url" content="' . get_permalink($post->ID) . '">' . "\n";
echo '<meta property="og:site_name" content="' . get_bloginfo( 'name' ) . '">' . "\n";
echo '<meta name="twitter:card" content="summary_large_image">' . "\n";
echo '<meta name="twitter:image" content="' . get_the_post_thumbnail_url($post->ID) . '">' . "\n";
}
if ( is_page() ) {
echo "\n" . '<meta name="description" content="Travel Budget and Planning App" />' . "\n";
echo '<meta property="og:title" content="' . get_bloginfo( 'name' ) . '" />' . "\n";
echo '<meta property="og:description" content="Travel Budget and Planning App" />' . "\n";
echo '<meta property="og:url" content="' . get_site_url() . '">' . "\n";
echo '<meta property="og:site_name" content="' . get_bloginfo( 'name' ) . '">' . "\n";
}
if ( is_home() ) {
echo "\n" . '<meta name="description" content="Travel Budget and Planning App" />' . "\n";
echo '<meta property="og:title" content="Homepage" />' . "\n";
echo '<meta property="og:description" content="Travel Budget and Planning App" />' . "\n";
echo '<meta property="og:url" content="' . get_site_url() . '">' . "\n";
echo '<meta property="og:site_name" content="' . get_bloginfo( 'name' ) . '">' . "\n";
}
if ( is_category() ) {
$des_cat = strip_tags(category_description());
echo "\n" . '<meta name="description" content="' . $des_cat . '" />' . "\n";
}
}
add_action('wp_head', 'add_meta_tags');
/**
* Additional meta data to post
* @param WP_POST &$post
*/
function add_meta_value_to_posts( &$post ) {
if ( !$post ) {
return;
}
// get all custom fields
if ( function_exists( 'get_fields' ) ) {
$post_meta = get_fields( $post->ID );
if ( $post_meta ) {
foreach ( $post_meta as $key => $meta ) {
if ( !empty($meta) && is_string($meta) && preg_match( '/^http|^https:\/\/.*?/m', $meta ) ) {
$meta = encodeURI( $meta );
}
$post->$key = $meta;
}
}
}
// get post author
$post->display_name = get_the_author_meta( 'display_name', $post->post_author );
// get featured image
$post->featured_image = encodeURI( get_the_post_thumbnail_url( $post ) );
$post->_wp_attachment_metadata = get_post_meta( $post->ID, '_wp_attachment_metadata', true );
}
function encodeURI($url) {
// http://php.net/manual/en/function.rawurlencode.php
// https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/encodeURI
$unescaped = array(
'%2D'=>'-','%5F'=>'_','%2E'=>'.','%21'=>'!', '%7E'=>'~',
'%2A'=>'*', '%27'=>"'", '%28'=>'(', '%29'=>')'
);
$reserved = array(
'%3B'=>';','%2C'=>',','%2F'=>'/','%3F'=>'?','%3A'=>':',
'%40'=>'@','%26'=>'&','%3D'=>'=','%2B'=>'+','%24'=>'$'
);
$score = array(
'%23'=>'#'
);
return strtr(rawurlencode($url), array_merge($reserved,$unescaped,$score));
}
/**
* Comment fields
*
* @since 1.0.0
*/
if ( ! function_exists( 'oceanwp_modify_comment_form_fields' ) ) {
function oceanwp_modify_comment_form_fields( $fields ) {
$commenter = wp_get_current_commenter();
$req = get_option( 'require_name_email' );
// Labels.
if ( $req ) {
$comment_name = oceanwp_theme_strings( 'owp-string-comment-name-req', false, 'oceanwp' );
$comment_email = oceanwp_theme_strings( 'owp-string-comment-email-req', false, 'oceanwp' );
} else {
$comment_name = oceanwp_theme_strings( 'owp-string-comment-name', false, 'oceanwp' );
$comment_email = oceanwp_theme_strings( 'owp-string-comment-email', false, 'oceanwp' );
}
$comment_site = oceanwp_theme_strings( 'owp-string-comment-website', false, 'oceanwp' );
$fields['author'] = '<div class="comment-form-author"><label for="author" class="screen-reader-text">'. esc_html__( 'Enter your name or username to comment', 'oceanwp' ) . '</label><input type="text" name="author" id="author" value="'. esc_attr( $commenter['comment_author'] ) .'" placeholder="'. $comment_name .'" size="22" tabindex="0"'. ( $req ? ' aria-required="true"' : '' ) .' class="input-name" /></div>';
$fields['email'] = '<div class="comment-form-email"><label for="email" class="screen-reader-text">'. esc_html__( 'Enter your email address to comment', 'oceanwp' ) . '</label><input type="text" name="email" id="email" value="'. esc_attr( $commenter['comment_author_email'] ) .'" placeholder="'. $comment_email .'" size="22" tabindex="0"'. ( $req ? ' aria-required="true"' : '' ) .' class="input-email" /></div>';
$fields['url'] = '';
$fields['cookies'] = '';
return $fields;
}
add_filter( 'comment_form_default_fields', 'oceanwp_modify_comment_form_fields' );
}