Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now
Sign InSign Up

PHP-J

PHP-J

PHP-J Navigation

  • Главная
  • Контакты
Поиск
Задать вопрос

Mobile menu

Close
Задать вопрос
  • Главная
  • Add group
  • User Profile
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Buy Points
Home/ Questions/Q 85151
Next
Answered
janochen
  • 0
janochenМастер
Asked: 20 марта, 20222022-03-20T23:44:53+03:00 2022-03-20T23:44:53+03:00In: Wordpress (Вопросы и ответы)

Как разрешить пользователям голосовать против в этом простом счетчике голосов (который использует метаданные поста)?

  • 0

В этом простом руководстве вы узнаете, как создать счетчик голосов, используя метаданные публикации.

Я хотел бы знать, как добавить голоса против этого небольшого скрипта (например, -1, -2). Следующим образом: если у поста 0 голосов и за него проголосовали против, он получает -1. Если у сообщения есть 1 голос, и за него проголосовали, он заканчивается 0 (только один счетчик).

часть jQuery:

<?php wp_enqueue_script( 'jquery' ) ?>
<?php wp_head(); ?>
    <script type="text/javascript">
        jQuery(document).ready(function() {
            jQuery(".vote a").click(

            function() {
                var some = jQuery(this);
                var thepost = jQuery(this).attr("post");
                var theuser = jQuery(this).attr("user");
                jQuery.post("<?php bloginfo('template_url'); ?>/vote.php", {
                    user: theuser,
                    post: thepost
                }, function(data) {
                    var votebox = ".vote" + thepost + " span";
                    jQuery(votebox).text(data);
                    jQuery(some).replaceWith('<span class="voted">Voted</span>');
                });
            });
        });
    </script>

Когда участник нажимает на ссылку для голосования, приведенный выше код получает идентификатор сообщения и идентификатор пользователя участника и отправляет их в файл с именем voice.php, используя метод сообщения. Файл voice.php выполнит все, что нам нужно для добавления голосования.

голосование.php:

<?php
$file = dirname(__FILE__);
$file = substr($file, 0, stripos($file, "wp-content") );

require( $file . "/wp-load.php");

$currentvotes = get_post_meta($_POST['post'], 'votes', true);
$currentvotes = $currentvotes + 1;

$voters = get_post_meta($_POST['post'], 'thevoters', true);
if(!$voters) $voters = $_POST['user']; else $voters = $voters.",".$_POST['user'];

update_post_meta($_POST['post'], 'votes', $currentvotes);
update_post_meta($_POST['post'], 'thevoters', $voters);

echo $currentvotes;
?>

После того, как информация отправлена ​​​​на голосование.php, создаются два настраиваемых поля. Один для подсчета голосов и один для добавления избирателя в список, чтобы он не мог проголосовать снова.

functions.php:

// voting function
function voting($id) {
global $user_ID;
$currentvotes = get_post_meta($id, 'votes', true);
$voters = get_post_meta($id, 'thevoters', true);
$voters = explode(",", $voters);
foreach($voters as $voter) {
    if($voter == $user_ID) $alreadyVoted = true;
}

if(!$currentvotes) $currentvotes = 0;
echo '<div class="vote vote'.$id.'"><span>'.$currentvotes.'</span>';
if($user_ID && !$alreadyVoted) echo '<br /><a post="'.$id.'" user="'.$user_ID.'">'.__("Vote").'</a>';
if($user_ID && $alreadyVoted) echo '<br /><span class="voted">'.__("Voted").'</span>';
echo '</div>';
if(!$user_ID) echo '<div class="signup"><p><a href="'.get_bloginfo('url').'/wp-login.php?action=register">'.__('Register').'</a> '.__('to vote').'.</p></div>';
}

какие-либо предложения?

ajaxplugin-developmentpost-meta
  • 4 4 ответов
  • 13 просмотров
  • 0 Followers
  • 0
Ответить
Share
  • Facebook

    4 ответов

    • Лучшие оценки
    • Старые
    • Недавние
    • Случайные
    1. tos Гуру
      2022-03-20T23:45:29+03:00Добавлен ответ 20 марта, 2022 в 11:45 пп

      Загрузка скриптов прямо в header.php темы… только что умер щенок… 🙁

      • 0
      • Reply
      • janochen Мастер
        2022-03-20T23:46:12+03:00Replied to ответ 20 марта, 2022 в 11:46 пп

        @ t31os ха-ха, спасибо, что указали на это.

        • 0
        • Reply
      • scott Гуру
        2022-03-20T23:47:52+03:00Replied to ответ 20 марта, 2022 в 11:47 пп

        Я хотел бы добавить, что этой системой голосования легко злоупотреблять. Единственный реальный способ обеспечить это — заставить людей войти в систему для голосования. После входа в систему вы должны проверить имя пользователя в файле voice.php, а не передавать его в запросе ajax.

        • 0
        • Reply
    2. Лучший ответ
      scott Гуру
      2022-03-20T23:46:56+03:00Добавлен ответ 20 марта, 2022 в 11:46 пп

      Вам придется сделать вторую кнопку для голосования против. Присвойте кнопке голосования «за» класс «за», а кнопке голосования «против» — класс «против».

      jQuery

      <?php wp_enqueue_script( 'jquery' ) ?>
      <?php wp_head(); ?>
          <script type="text/javascript">
              jQuery(document).ready(function() {
                  jQuery(".vote a.up").click(
      
                  function() {
                      var some = jQuery(this);
                      var thepost = jQuery(this).attr("post");
                      var theuser = jQuery(this).attr("user");
                      jQuery.post("<?php bloginfo('template_url'); ?>/vote.php", {
                          user: theuser,
                          post: thepost,
                          updown: 'up'
                      }, function(data) {
                          var votebox = ".vote" + thepost + " span";
                          jQuery(votebox).text(data);
                          jQuery(some).replaceWith('<span class="voted">Voted</span>');
                      });
                  });
                  jQuery(".vote a.down").click(
      
                  function() {
                      var some = jQuery(this);
                      var thepost = jQuery(this).attr("post");
                      var theuser = jQuery(this).attr("user");
                      jQuery.post("<?php bloginfo('template_url'); ?>/vote.php", {
                          user: theuser,
                          post: thepost,
                          updown: 'down'
                      }, function(data) {
                          var votebox = ".vote" + thepost + " span";
                          jQuery(votebox).text(data);
                          jQuery(some).replaceWith('<span class="voted">Voted</span>');
                      });
                  });
              });
          </script>
      

      voice.php

      <?php
      $file = dirname(__FILE__);
      $file = substr($file, 0, stripos($file, "wp-content") );
      
      require( $file . "/wp-load.php");
      
      $currentvotes = get_post_meta($_POST['post'], 'votes', true);
      if("up" == $_POST['updown']) {
          $currentvotes ++;
      } elseif("down" == $_POST['updown']) {
          $currentvotes --;
      }
      
      $voters = get_post_meta($_POST['post'], 'thevoters', true);
      if(!$voters) $voters = $_POST['user']; else $voters = $voters.",".$_POST['user'];
      
      update_post_meta($_POST['post'], 'votes', $currentvotes);
      update_post_meta($_POST['post'], 'thevoters', $voters);
      
      echo $currentvotes;
      ?>
      

      Это все, что вам нужно для редактирования

      • 0
      • Reply

    Оставить ответ
    Отменить ответ

    You must login to add an answer.

    Forgot Password?

    Need An Account, Sign Up Here

    Sidebar

    Ask A Question

    Stats

    • Questions : 7k
    • Answers : 38k
    • Best Answers : 4k
    • Users : 5k
    • Popular
    • Answers
    • netconstructorcom

      Лучшая подборка кода для вашего файла functions.php [закрыто]

      • 97 Answers
    • MikeSchinkel

      Объективные рекомендации по разработке плагинов? [закрыто]

      • 83 Answers
    • EAMann

      Как легко перенести установку WordPress из стадии разработки в рабочую ...

      • 60 Answers
    • Karenfreva
      Karenfreva added an answer [url=https://sildenafilviashop.com/]viagra over the counter[/url] cialis vs viagra [url=https://tblsviagra.com/]cheap viagra online[/url]… 27 июня, 2022 at 11:19 дп
    • Karenfreva
      Karenfreva added an answer [url=https://casinoboba.com/]lucky creek[/url] uptown ace casino [url=https://casinowingames.com/]sloto cash casino[/url] andromeda [url=https://realmonetcasino.com/]ignition[/url]… 25 июня, 2022 at 12:21 пп
    • bainternet
      bainternet added an answer попробуй это://first get all agents $agents = new WP_Query(array('post_type' =>… 27 марта, 2022 at 6:12 пп

    Похожие вопросы

    • nmystic

      Как назначить файл по умолчанию в «Внешний вид > Редактор»?

      • 0 Answers
    • billeisenhauer

      Как показать полную публикацию на главной странице

      • 0 Answers
    • atticus

      Создание пользовательских запросов AJAX

      • 0 Answers

    Лучшие участники

    rarst

    rarst

    • 0 Questions
    • 5k Points
    Гуру
    bainternet

    bainternet

    • 0 Questions
    • 5k Points
    Гуру
    janfabry

    janfabry

    • 0 Questions
    • 3k Points
    Гуру

    Trending Tags

    categories comments custom-field custom-post-types custom-taxonomy customization functions images menus multisite pages permalinks php plugin-development plugin-recommendation plugins posts theme-development themes widgets wp-admin

    Footer

    © 2022

    Вставить/изменить ссылку

    Введите адрес назначения (URL)

    Или сделайте ссылку на существующий материал

      Поисковый запрос не задан. Показаны недавние элементы. Воспользуйтесь поиском или клавишами вверх/вниз, чтобы выбрать элемент.