Suporte » Desenvolvendo com WordPress » Marcar e desmarcar post favorito

  • Resolvido Nura

    (@archer-master)


    Boa noite, tenho um código que serve pra favoritar o post, gostaria que ele contasse apenas o primeiro clique e se clicasse novamente desmarcava a opção e não adicionasse mais +1.

    Functions.php

    add_action( 'wp_enqueue_scripts', 'ajax_test_enqueue_scripts' );
    function ajax_test_enqueue_scripts() {
    	if( is_single() ) {
    		wp_enqueue_style( 'love', plugins_url( '/love.css', __FILE__ ) );
    	}
    
    	wp_enqueue_script( 'love', plugins_url( '/love.js', __FILE__ ), array('jquery'), '1.0', true );
    
    	wp_localize_script( 'love', 'postlove', array(
    		'ajax_url' => admin_url( 'admin-ajax.php' )
    	));
    
    }
    
    add_filter( 'the_content', 'post_love_display', 99 );
    function post_love_display( $content ) {
    	$love_text = '';
    
    	if ( is_single() ) {
    		
    		$love = get_post_meta( get_the_ID(), 'post_love', true );
    		$love = ( empty( $love ) ) ? 0 : $love;
    
    		$love_text = '<p class="love-received"><a class="love-button" href="' . admin_url( 'admin-ajax.php?action=post_love_add_love&post_id=' . get_the_ID() ) . '" data-id="' . get_the_ID() . '">give love</a><span id="love-count">' . $love . '</span></p>'; 
    	
    	}
    
    	return $content . $love_text;
    
    }
    
    add_action( 'wp_ajax_nopriv_post_love_add_love', 'post_love_add_love' );
    add_action( 'wp_ajax_post_love_add_love', 'post_love_add_love' );
    
    function post_love_add_love() {
    	$love = get_post_meta( $_REQUEST['post_id'], 'post_love', true );
    	$love++;
    	update_post_meta( $_REQUEST['post_id'], 'post_love', $love );
    	if ( defined( 'DOING_AJAX' ) && DOING_AJAX ) { 
    		echo $love;
    		die();
    	}
    	else {
    		wp_redirect( get_permalink( $_REQUEST['post_id'] ) );
    		exit();
    	}
    }

    love.js

    
    jQuery( document ).on( 'click', '.love-button', function() {
    	var post_id = jQuery(this).data('id');
    	jQuery.ajax({
    		url : postlove.ajax_url,
    		type : 'post',
    		data : {
    			action : 'post_love_add_love',
    			post_id : post_id
    		},
    		success : function( response ) {
    			jQuery('#love-count').html( response );
    		}
    	});
    
    	return false;
    })

    love.css

    .entry-content .love-button {
    	background: #f14864;
    	color: #fff;
    	padding:11px 22px;
    	display:inline-block;
    	border:0px;
    	text-decoration: none;
        box-shadow: 0px 6px #d2234c;
        position:relative;
    }
    
    .entry-content .love-button:hover{
    	top:3px;
        box-shadow: 0px 3px #d2234c;
    }
    
    .entry-content .love-button:active{
    	top:6px;
        box-shadow: none;
    }
    
    #love-count {
    	background: #eee;
        box-shadow: 0px 6px #ddd;	
    	color: #666;
    	padding:11px 22px;
    	display:inline-block;
    }
Visualizando 2 respostas - 1 até 2 (de um total de 2)
Visualizando 2 respostas - 1 até 2 (de um total de 2)
  • Você deve estar conectado para responder a este tópico.