Caner Dio

WordPress & Sanayi İşleri & Web Master

Caner'in blogunda, WordPress ipuçları, web tasarımı rehberleri ve sanayi işleri hakkında yazılar bulabilir, dijital çözümlerle işinizi geliştirebilirsiniz.

SİNCE 2006

WordPress Beğen Butonu Yapımı

  • Uyarı! Bu yazı 03.07.2016 tarihinde yazıldı. O günden bu güne bir çok şey değişmiş ve yazı geçerliliğini yitirmiş olabilir.

    Sosyal sitelerin artmasıyla wordpress yazı kodlarıda bir hayli arttı. Tıpkı instagramda ki kalp şeklinde beğenme işlemini yazılarınızda alttaki işlemleri uygulayarak gösterebilirsiniz. Bu sayede yazılarınızı okunma ve yorum sayısından ziyade bu beğeni ile de ölçebilirsiniz. Kalbin gözükmesi için bu yazımdaki işlem olması gerekiyor. Kalp boyutuda aynı şekilde yazıdaki gibi büyütülebilir. (fa fa heart) Temanızın css dosyasına ekleyin.
    a.jm-post-like{font-weight:normal;display:inline-block;width:auto;font-size:13px;font-size:0.928571429rem;line-height:1.846153846;-moz-transition:all 0.3s ease-out 0.2s;-webkit-transition:all 0.3s ease-out 0.2s;-o-transition:all 0.3s ease-out 0.2s;}a.jm-post-like.liked{color:#da1b1b;}a.jm-post-like:hover,a.jm-post-like:active,a.jm-post-like:focus,a.liked:hover,a.liked:active,a.liked:focus{color:#000;}
    Temanızın header.php dosyasına ekleyin.
    <script type="text/javascript" src="https://www.bycaner.com/demolar/post-like.js"></script>
    Temanızın functions.php dosyasına ekleyin. (yedek alarak işlem yapın.)
    function like_scripts() { wp_enqueue_script( 'jm_like_post', get_template_directory_uri().'/js/post-like.js', array('jquery'), '1.0', 1 ); wp_localize_script( 'jm_like_post', 'ajax_var', array( 'url' => admin_url( 'admin-ajax.php' ), 'nonce' => wp_create_nonce( 'ajax-nonce' ) ) ); } add_action( 'init', 'like_scripts' ); /** * (2) Add Fontawesome Icons */ function enqueue_icons () { wp_register_style( 'font-awesome', get_template_directory_uri().'/fonts/font-awesome.min.css' ); wp_enqueue_style( 'icon-style' ); } add_action( 'wp_enqueue_scripts', 'enqueue_icons' ); /** * (3) Save like data */ add_action( 'wp_ajax_nopriv_jm-post-like', 'jm_post_like' ); add_action( 'wp_ajax_jm-post-like', 'jm_post_like' ); function jm_post_like() { $nonce = $_POST['nonce']; if ( ! wp_verify_nonce( $nonce, 'ajax-nonce' ) ) die ( 'Hata!' ); if ( isset( $_POST['jm_post_like'] ) ) { $post_id = $_POST['post_id']; // post id $post_like_count = get_post_meta( $post_id, "_post_like_count", true ); // post like count if ( is_user_logged_in() ) { // user is logged in $user_id = get_current_user_id(); // current user $meta_POSTS = get_user_option( "_liked_posts", $user_id ); // post ids from user meta $meta_USERS = get_post_meta( $post_id, "_user_liked" ); // user ids from post meta $liked_POSTS = NULL; // setup array variable $liked_USERS = NULL; // setup array variable if ( count( $meta_POSTS ) != 0 ) { // meta exists, set up values $liked_POSTS = $meta_POSTS; } if ( !is_array( $liked_POSTS ) ) // make array just in case $liked_POSTS = array(); if ( count( $meta_USERS ) != 0 ) { // meta exists, set up values $liked_USERS = $meta_USERS[0]; } if ( !is_array( $liked_USERS ) ) // make array just in case $liked_USERS = array(); $liked_POSTS['post-'.$post_id] = $post_id; // Add post id to user meta array $liked_USERS['user-'.$user_id] = $user_id; // add user id to post meta array $user_likes = count( $liked_POSTS ); // count user likes if ( !AlreadyLiked( $post_id ) ) { // like the post update_post_meta( $post_id, "_user_liked", $liked_USERS ); // Add user ID to post meta update_post_meta( $post_id, "_post_like_count", ++$post_like_count ); // +1 count post meta update_user_option( $user_id, "_liked_posts", $liked_POSTS ); // Add post ID to user meta update_user_option( $user_id, "_user_like_count", $user_likes ); // +1 count user meta echo $post_like_count; // update count on front end } else { // unlike the post $pid_key = array_search( $post_id, $liked_POSTS ); // find the key $uid_key = array_search( $user_id, $liked_USERS ); // find the key unset( $liked_POSTS[$pid_key] ); // remove from array unset( $liked_USERS[$uid_key] ); // remove from array $user_likes = count( $liked_POSTS ); // recount user likes update_post_meta( $post_id, "_user_liked", $liked_USERS ); // Remove user ID from post meta update_post_meta($post_id, "_post_like_count", --$post_like_count ); // -1 count post meta update_user_option( $user_id, "_liked_posts", $liked_POSTS ); // Remove post ID from user meta update_user_option( $user_id, "_user_like_count", $user_likes ); // -1 count user meta echo "already".$post_like_count; // update count on front end } } else { // user is not logged in (anonymous) $ip = $_SERVER['REMOTE_ADDR']; // user IP address $meta_IPS = get_post_meta( $post_id, "_user_IP" ); // stored IP addresses $liked_IPS = NULL; // set up array variable if ( count( $meta_IPS ) != 0 ) { // meta exists, set up values $liked_IPS = $meta_IPS[0]; } if ( !is_array( $liked_IPS ) ) // make array just in case $liked_IPS = array(); if ( !in_array( $ip, $liked_IPS ) ) // if IP not in array $liked_IPS['ip-'.$ip] = $ip; // add IP to array if ( !AlreadyLiked( $post_id ) ) { // like the post update_post_meta( $post_id, "_user_IP", $liked_IPS ); // Add user IP to post meta update_post_meta( $post_id, "_post_like_count", ++$post_like_count ); // +1 count post meta echo $post_like_count; // update count on front end } else { // unlike the post $ip_key = array_search( $ip, $liked_IPS ); // find the key unset( $liked_IPS[$ip_key] ); // remove from array update_post_meta( $post_id, "_user_IP", $liked_IPS ); // Remove user IP from post meta update_post_meta( $post_id, "_post_like_count", --$post_like_count ); // -1 count post meta echo "already".$post_like_count; // update count on front end } } } exit; } /** * (4) Test if user already liked post */ function AlreadyLiked( $post_id ) { // test if user liked before if ( is_user_logged_in() ) { // user is logged in $user_id = get_current_user_id(); // current user $meta_USERS = get_post_meta( $post_id, "_user_liked" ); // user ids from post meta $liked_USERS = ""; // set up array variable if ( count( $meta_USERS ) != 0 ) { // meta exists, set up values $liked_USERS = $meta_USERS[0]; } if( !is_array( $liked_USERS ) ) // make array just in case $liked_USERS = array(); if ( in_array( $user_id, $liked_USERS ) ) { // True if User ID in array return true; } return false; } else { // user is anonymous, use IP address for voting $meta_IPS = get_post_meta( $post_id, "_user_IP" ); // get previously voted IP address $ip = $_SERVER["REMOTE_ADDR"]; // Retrieve current user IP $liked_IPS = ""; // set up array variable if ( count( $meta_IPS ) != 0 ) { // meta exists, set up values $liked_IPS = $meta_IPS[0]; } if ( !is_array( $liked_IPS ) ) // make array just in case $liked_IPS = array(); if ( in_array( $ip, $liked_IPS ) ) { // True is IP in array return true; } return false; } } /** * (5) Front end button */ function getPostLikeLink( $post_id ) { $like_count = get_post_meta( $post_id, "_post_like_count", true ); // get post likes $count = ( empty( $like_count ) || $like_count == "0" ) ? '' : esc_attr( $like_count ); if ( AlreadyLiked( $post_id ) ) { $class = esc_attr( ' liked' ); $heart = '<i class="fa fa-heart"></i>'; } else { $class = esc_attr( '' ); $title = esc_attr( 'Beğen' ); $heart = '<i class="fa fa-heart-o"></i>'; } $output = '<a href="#" class="jm-post-like'.$class.'" data-post_id="'.$post_id.'" title="'.$title.'">'.$heart.'&nbsp;'.$count.'</a>'; return $output; } /** * (6) Retrieve User Likes and Show on Profile */ add_action( 'show_user_profile', 'show_user_likes' ); add_action( 'edit_user_profile', 'show_user_likes' ); function show_user_likes( $user ) { ?> <table class="form-table"> <tr> <th><label for="user_likes"><?php _e( 'You Like:' ); ?></label></th> <td> <?php $user_likes = get_user_option( "_liked_posts", $user->ID ); if ( !empty( $user_likes ) && count( $user_likes ) > 0 ) { $the_likes = $user_likes; } else { $the_likes = ''; } if ( !is_array( $the_likes ) ) $the_likes = array(); $count = count( $the_likes ); $i=0; if ( $count > 0 ) { $like_list = ''; echo "<p>\n"; foreach ( $the_likes as $the_like ) { $i++; $like_list .= "<a href=\"" . esc_url( get_permalink( $the_like ) ) . "\" title=\"" . esc_attr( get_the_title( $the_like ) ) . "\">" . get_the_title( $the_like ) . "</a>\n"; if ($count != $i) $like_list .= " &middot; "; else $like_list .= "</p>\n"; } echo $like_list; } else { echo "<p>" . _e( 'You don\'t like anything yet.' ) . "</p>\n"; } ?> </td> </tr> </table> <?php } /** * (7) Add a shortcode to your posts instead * type <a href="" class="jm-post-like" data-post_id="7343" title=""><i class="fa fa-heart-o"></i> 26</a> in your post to output the button */ function jm_like_shortcode() { return getPostLikeLink( get_the_ID() ); } add_shortcode('jmliker', 'jm_like_shortcode'); /** * (8) If the user is logged in, output a list of posts that the user likes * Markup assumes sidebar/widget usage */ function frontEndUserLikes() { if ( is_user_logged_in() ) { // user is logged in $like_list = ''; $user_id = get_current_user_id(); // current user $user_likes = get_user_option( "_liked_posts", $user_id ); if ( !empty( $user_likes ) && count( $user_likes ) > 0 ) { $the_likes = $user_likes; } else { $the_likes = ''; } if ( !is_array( $the_likes ) ) $the_likes = array(); $count = count( $the_likes ); if ( $count > 0 ) { $limited_likes = array_slice( $the_likes, 0, 5 ); // this will limit the number of posts returned to 5 $like_list .= "<aside>\n"; $like_list .= "<h3>" . __( 'You Like:' ) . "</h3>\n"; $like_list .= "<ul>\n"; foreach ( $limited_likes as $the_like ) { $like_list .= "<li><a href='" . esc_url( get_permalink( $the_like ) ) . "' title='" . esc_attr( get_the_title( $the_like ) ) . "'>" . get_the_title( $the_like ) . "</a></li>\n"; } $like_list .= "</ul>\n"; $like_list .= "</aside>\n"; } echo $like_list; } } /** * (9) Outputs a list of the 5 posts with the most user likes TODAY * Markup assumes sidebar/widget usage */ function jm_most_popular_today() { global $post; $today = date('j'); $year = date('Y'); $args = array( 'year' => $year, 'day' => $today, 'post_type' => array( 'post', 'enter-your-comma-separated-post-types-here' ), 'meta_key' => '_post_like_count', 'orderby' => 'meta_value_num', 'order' => 'DESC', 'posts_per_page' => 5 ); $pop_posts = new WP_Query( $args ); if ( $pop_posts->have_posts() ) { echo "<aside>\n"; echo "<h3>" . _e( 'Today\'s Most Popular Posts' ) . "</h3>\n"; echo "<ul>\n"; while ( $pop_posts->have_posts() ) { $pop_posts->the_post(); echo "<li><a href='" . get_permalink($post->ID) . "'>" . get_the_title() . "</a></li>\n"; } echo "</ul>\n"; echo "</aside>\n"; } wp_reset_postdata(); } /** * (10) Outputs a list of the 5 posts with the most user likes for THIS MONTH * Markup assumes sidebar/widget usage */ function jm_most_popular_month() { global $post; $month = date('m'); $year = date('Y'); $args = array( 'year' => $year, 'monthnum' => $month, 'post_type' => array( 'post', 'enter-your-comma-separated-post-types-here' ), 'meta_key' => '_post_like_count', 'orderby' => 'meta_value_num', 'order' => 'DESC', 'posts_per_page' => 5 ); $pop_posts = new WP_Query( $args ); if ( $pop_posts->have_posts() ) { echo "<aside>\n"; echo "<h3>" . _e( 'This Month\'s Most Popular Posts' ) . "</h3>\n"; echo "<ul>\n"; while ( $pop_posts->have_posts() ) { $pop_posts->the_post(); echo "<li><a href='" . get_permalink($post->ID) . "'>" . get_the_title() . "</a></li>\n"; } echo "</ul>\n"; echo "</aside>\n"; } wp_reset_postdata(); } /** * (11) Outputs a list of the 5 posts with the most user likes for THIS WEEK * Markup assumes sidebar/widget usage */ function jm_most_popular_week() { global $post; $week = date('W'); $year = date('Y'); $args = array( 'year' => $year, 'w' => $week, 'post_type' => array( 'post', 'enter-your-comma-separated-post-types-here' ), 'meta_key' => '_post_like_count', 'orderby' => 'meta_value_num', 'order' => 'DESC', 'posts_per_page' => 5 ); $pop_posts = new WP_Query( $args ); if ( $pop_posts->have_posts() ) { echo "<aside>\n"; echo "<h3>" . _e( 'This Week\'s Most Popular Posts' ) . "</h3>\n"; echo "<ul>\n"; while ( $pop_posts->have_posts() ) { $pop_posts->the_post(); echo "<li><a href='" . get_permalink($post->ID) . "'>" . get_the_title() . "</a></li>\n"; } echo "</ul>\n"; echo "</aside>\n"; } wp_reset_postdata(); } /** * (12) Outputs a list of the 5 posts with the most user likes for ALL TIME * Markup assumes sidebar/widget usage */ function jm_most_popular() { global $post; echo "<aside>\n"; echo "<h3>" . _e( 'Most Popular Posts' ) . "</h3>\n"; echo "<ul>\n"; $args = array( 'post_type' => array( 'post', 'enter-your-comma-separated-post-types-here' ), 'meta_key' => '_post_like_count', 'orderby' => 'meta_value_num', 'order' => 'DESC', 'posts_per_page' => 5 ); $pop_posts = new WP_Query( $args ); while ( $pop_posts->have_posts() ) { $pop_posts->the_post(); echo "<li><a href='" . get_permalink($post->ID) . "'>" . get_the_title() . "</a></li>\n"; } wp_reset_postdata(); echo "</ul>\n"; echo "</aside>\n"; }
    Single.php de uygun yere alttaki kodu ekleyin.
    Beğen: <?php echo getPostLikeLink( $post->ID );?>

    Etiketler
  • Yorumlar

    Yorum Yapın

    E-posta adresiniz yayınlanmayacak.Gerekli alanlar * ile işaretlenmişlerdir

Anonim
Hakkında

Merhaba, ben Caner. Wordpress, web tasarımı, satış pazarlama, mimari tasarım, 3ds max, autocad ve sanayi sektörlerinde yeterli tecrübeye sahip ve derinlemesine bilgi sahibiyim. Yıllardır yaratıcı projeler üzerinde çalışarak, teknolojiyi iş dünyasına entegre etmeyi seviyorum. bycaner.com üzerinden WordPress ipuçları, web tasarımı rehberleri ve sanayi sektörüyle ilgili değerli bilgiler paylaşarak, dijital dünyadaki yolculuğunuzu kolaylaştırmayı hedefliyorum. Her gün daha verimli ve yaratıcı çözümler üreterek, işinizi büyütmenize yardımcı oluyorum.

210 defa görüntülendi.
3 Temmuz 2016 tarihinde eklendi.
KATEGORİLER
Admin Gravatar