first commit
This commit is contained in:
@@ -0,0 +1,366 @@
|
||||
<?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' );
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user