2013-05-06 2 views
0

У меня есть настраиваемая тема для интернет-магазина (http://themeforest.net/item/mayashop-a-flexible-responsive-ecommerce-theme/2189918), который поставляется с несколькими типами контента (помимо типа сообщения по умолчанию), и мне нужно добавить какую-то систему голосования на один из это нестандартные типы контента (в частности, для типа контента продукта, чтобы пользователи могли проголосовать за продукты, которые им нравятся в моем магазине).Добавить систему голосования в пользовательский тип контента в wordpress

Есть ли какой-либо плагин, который обеспечивает эту функциональность?

Благодаря

ответ

3

Есть много плагинов, которые делают это, вы можете просто Google их, Но если вы хотите знать, как это может быть легко (и primitivly) осуществляется с помощью пользовательских полей, то здесь вы идете:

add_action('wp_ajax_nopriv_o99__action', 'o99__ajax_cb'); 
add_action('wp_ajax_o99__action', 'o99__ajax_cb'); 

// this fanction is the ajax callback. 
function o99__ajax_cb(){ 

    // Verify the nonce to make sure the request is ours and legael... 

    if(!isset($_REQUEST['nonce']) || ! wp_verify_nonce($_REQUEST['nonce'], 'o99__nonce')) die('-1'); 

    $post_id = isset($_REQUEST['post_id']) ? absint($_REQUEST['post_id']) : 0; 

    if(! $post_id) die('-1'); 

    $counter = get_post_meta($post_id, 'o99_good_post', true); 
    $counter = absint($counter); 
    $cookie = 'o99_post_vote' .$post_id; 

    if($counter){ 

     if (!isset($_COOKIE[$cookie])) { 
      $counter++; 
     } 
     else {$counter=$counter;} 
    } 
    else{ 
     $counter = mt_rand(20,150); 
    } 

    update_post_meta($post_id, 'o99_good_post', $counter); //hidden field 
    echo $counter; 
    die(); 
} 


function o99__good_bad(){ 
    global $post; 
    // send a simple cookie 
    $cookie = 'o99_post_vote' .$post_id; 
    $count = get_post_meta($post->ID, 'o99_good_post', true); //hidden field 

    if (!$count){ 
     $count = '0'; 
    } 

    $icon = '<img src="'; 
    $icon .= get_bloginfo('template_url') ; // better using get_stylesheet_uri() now 
    if (!isset($_COOKIE[$cookie])) { 
     $icon .= '/images/dl-star16.png"/>'; // set up your icons according to case 
    } 
    else { 
     $icon .= '/images/dl-v16.png"/>'; 
    } 

    ?> 
    <span id="o99__click" title="Click Here to Vote this Post up"><?php echo $icon; ?> click here to vote up 
    This post was voted <span id="o99__count"><?php echo strip_tags($count);?> 
    </span> times</span> 
    <?php 
} 

// just injecting the JS into head -- 
add_action('wp_head', 'o99__head'); 

function o99__head() 
{ 
    if(! is_singular()) return; 
    $post_id = get_queried_object_id(); 
    ?> 
    <script type="text/javascript"> 
     var o99__data = { 
      action: 'o99__action', 
      post_id: '<?php echo absint($post_id); ?>', 
      nonce: '<?php echo wp_create_nonce('o99__nonce'); ?>', 
     } 

     jQuery(document).ready(function(){ 
      jQuery('#o99__click').click(function(){ 

       jQuery.get( 
        '<?php echo site_url('wp-admin/admin-ajax.php'); ?>', 
        o99__data, 
        function(data){ 
        if(jQuery.cookie('o99_post_vote<?php echo absint($post_id); ?>') != null) { 
          alert('You can only vote once per post!'); 
            }; 
        if(jQuery.cookie('o99_post_vote<?php echo absint($post_id); ?>') == null) { 
         if('-1' != data) 
         { 
          jQuery('span#o99__count').html(data); 
          jQuery.cookie('o99_post_vote<?php echo absint($post_id); ?>', 'voted', { expires: 7 }); 
          alert('your vote was accepted!'); 
          }; 
         } 
        } 
       ); 
      }); 
     }); 
    </script> 
    <?php 
} 
?> 

Это очень старая функция, которая была взломана давно, он должен еще работать, но, возможно, потребуется немного полируют ..

Редактировать Я некоторые примеры более сложных плагинов:

http://wordpress.org/extend/plugins/post-ratings/ http://wordpress.org/extend/plugins/post-ratings/screenshots/ http://wordpress.org/extend/plugins/gd-star-rating/ и если вы будете искать старинную рукопись вы найдете гораздо больше ..

, перечисленные выше поддержки пользовательских типов почтовых.

+0

Спасибо. Я попытаюсь найти эти плагины или реализовать этот фрагмент. Вы знаете, совместимы ли эти плагины с пользовательскими типами? – xger86x

+0

, вообще говоря, если не указано иное, пользовательский тип сообщения - это просто сообщение, и большинство плагинов будут работать с ними (если не указано иное) –

+0

см. Редактировать I для некоторых предложений –

Смежные вопросы