first commit
This commit is contained in:
@@ -0,0 +1,36 @@
|
||||
<?php
|
||||
|
||||
if ( ! function_exists( 'calla_elated_like' ) ) {
|
||||
/**
|
||||
* Returns CallaElatedLike instance
|
||||
*
|
||||
* @return CallaElatedLike
|
||||
*/
|
||||
function calla_elated_like() {
|
||||
return CallaElatedLike::get_instance();
|
||||
}
|
||||
}
|
||||
|
||||
function calla_elated_get_like() {
|
||||
|
||||
echo wp_kses( calla_elated_like()->add_like(), array(
|
||||
'span' => array(
|
||||
'class' => true,
|
||||
'aria-hidden' => true,
|
||||
'style' => true,
|
||||
'id' => true
|
||||
),
|
||||
'i' => array(
|
||||
'class' => true,
|
||||
'style' => true,
|
||||
'id' => true
|
||||
),
|
||||
'a' => array(
|
||||
'href' => true,
|
||||
'class' => true,
|
||||
'id' => true,
|
||||
'title' => true,
|
||||
'style' => true
|
||||
)
|
||||
) );
|
||||
}
|
||||
137
wp-content/themes/calla/framework/modules/like/like.php
Normal file
137
wp-content/themes/calla/framework/modules/like/like.php
Normal file
@@ -0,0 +1,137 @@
|
||||
<?php
|
||||
|
||||
class CallaElatedLike {
|
||||
private static $instance;
|
||||
|
||||
private function __construct() {
|
||||
add_action( 'wp_ajax_calla_elated_like', array( $this, 'ajax' ) );
|
||||
add_action( 'wp_ajax_nopriv_calla_elated_like', array( $this, 'ajax' ) );
|
||||
}
|
||||
|
||||
public static function get_instance() {
|
||||
if ( null == self::$instance ) {
|
||||
self::$instance = new self;
|
||||
}
|
||||
|
||||
return self::$instance;
|
||||
}
|
||||
|
||||
function ajax() {
|
||||
|
||||
$likes_id = isset( $_POST['likes_id'] ) && ! empty( $_POST['likes_id'] ) ? sanitize_text_field( $_POST['likes_id'] ) : '';
|
||||
|
||||
//update
|
||||
if ( !empty( $likes_id ) ) {
|
||||
$post_id = str_replace( 'eltdf-like-', '', $likes_id );
|
||||
$post_id = substr( $post_id, 0, - 4 );
|
||||
$type = isset( $_POST['type'] ) ? sanitize_text_field($_POST['type']) : '';
|
||||
|
||||
echo wp_kses( $this->like_post( $post_id, 'update', $type ), array(
|
||||
'span' => array(
|
||||
'class' => true,
|
||||
'aria-hidden' => true,
|
||||
'style' => true,
|
||||
'id' => true
|
||||
),
|
||||
'i' => array(
|
||||
'class' => true,
|
||||
'style' => true,
|
||||
'id' => true
|
||||
)
|
||||
) );
|
||||
} else {
|
||||
$post_id = str_replace( 'eltdf-like-', '', $likes_id );
|
||||
$post_id = substr( $post_id, 0, - 4 );
|
||||
echo wp_kses( $this->like_post( $post_id, 'get' ), array(
|
||||
'span' => array(
|
||||
'class' => true,
|
||||
'aria-hidden' => true,
|
||||
'style' => true,
|
||||
'id' => true
|
||||
),
|
||||
'i' => array(
|
||||
'class' => true,
|
||||
'style' => true,
|
||||
'id' => true
|
||||
)
|
||||
) );
|
||||
}
|
||||
|
||||
exit;
|
||||
}
|
||||
|
||||
public function like_post( $post_id, $action = 'get', $type = '' ) {
|
||||
if ( ! is_numeric( $post_id ) ) {
|
||||
return;
|
||||
}
|
||||
|
||||
switch ( $action ) {
|
||||
|
||||
case 'get':
|
||||
$like_count = get_post_meta( $post_id, '_eltdf-like', true );
|
||||
|
||||
if ( isset( $_COOKIE[ 'eltdf-like_' . $post_id ] ) ) {
|
||||
$icon = '<i class="icon_heart" aria-hidden="true"></i>';
|
||||
} else {
|
||||
$icon = '<i class="icon_heart_alt" aria-hidden="true"></i>';
|
||||
}
|
||||
|
||||
if ( ! $like_count ) {
|
||||
$like_count = 0;
|
||||
add_post_meta( $post_id, '_eltdf-like', $like_count, true );
|
||||
$icon = '<i class="icon_heart_alt" aria-hidden="true"></i>';
|
||||
}
|
||||
|
||||
$return_value = $icon . "<span>" . esc_attr( $like_count ) . "</span>";
|
||||
|
||||
return $return_value;
|
||||
break;
|
||||
|
||||
case 'update':
|
||||
$like_count = get_post_meta( $post_id, '_eltdf-like', true );
|
||||
|
||||
if ( isset( $_COOKIE[ 'eltdf-like_' . $post_id ] ) ) {
|
||||
return $like_count;
|
||||
}
|
||||
|
||||
$like_count ++;
|
||||
|
||||
update_post_meta( $post_id, '_eltdf-like', $like_count );
|
||||
setcookie( 'eltdf-like_' . $post_id, $post_id, time() * 20, '/' );
|
||||
|
||||
$return_value = "<i class='icon_heart' aria-hidden='true'></i><span>" . esc_attr( $like_count ) . "</span>";
|
||||
|
||||
return $return_value;
|
||||
|
||||
break;
|
||||
default:
|
||||
return '';
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
public function add_like() {
|
||||
global $post;
|
||||
|
||||
$output = $this->like_post( $post->ID );
|
||||
|
||||
$class = 'eltdf-like';
|
||||
$rand_number = rand( 100, 999 );
|
||||
$title = esc_html__( 'Like this', 'calla' );
|
||||
|
||||
if ( isset( $_COOKIE[ 'eltdf-like_' . $post->ID ] ) ) {
|
||||
$class = 'eltdf-like liked';
|
||||
$title = esc_html__( 'You already like this!', 'calla' );
|
||||
}
|
||||
|
||||
return '<a href="#" class="' . $class . '" id="eltdf-like-' . $post->ID . '-' . $rand_number . '" title="' . $title . '">' . $output . '</a>';
|
||||
}
|
||||
}
|
||||
|
||||
if ( ! function_exists( 'calla_elated_create_like' ) ) {
|
||||
function calla_elated_create_like() {
|
||||
CallaElatedLike::get_instance();
|
||||
}
|
||||
|
||||
add_action( 'after_setup_theme', 'calla_elated_create_like' );
|
||||
}
|
||||
4
wp-content/themes/calla/framework/modules/like/load.php
Normal file
4
wp-content/themes/calla/framework/modules/like/load.php
Normal file
@@ -0,0 +1,4 @@
|
||||
<?php
|
||||
|
||||
include_once ELATED_FRAMEWORK_MODULES_ROOT_DIR . '/like/like.php';
|
||||
include_once ELATED_FRAMEWORK_MODULES_ROOT_DIR . '/like/like-functions.php';
|
||||
Reference in New Issue
Block a user