WordPress как на ладони
rgbcode is looking for WordPress developers. eurobyte.ru - мощные сервера с Дата-центрами в Нидерландах и Москве. От 159 ₽/мес.

Плагин выставить рейтинг индивидуально

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

Подсмотрел, что решается через плагин рейтинг, но он не учитывает индивидуальный рейтинг, а считает общий,

Может есть специальный плагин, может кто встречал ?

Сейчас временное решение:
Ищу плагин рейтинга, буду править, чтоб запись шла не в post_meta, а в user_meta

user_meta -> peace_quality -> 1of10


Собрал франкенштейна, облагораживать некогда, да и толком не умею, Главное! Работает.
Пишет для пользователя в БД в user_meta где сохраняет ID постов со значением от 1 до 6

Заметки к вопросу:
kolshix 1.3 года назад

html

<select name="products postid-'. get_the_ID() .'" class="piece-quality" id="piece-quality" forqual="'.   get_the_ID().'">
<option value="" selected="selected">--</option>
<option value="1" selected="selected">1</option>

php

	function add_ajax_scripts() {
	wp_enqueue_script( 'ajaxcalls', 'https://site.com/wp-content/themes/synapse-child/js/ajax-calls.js', array(), '1.0.0', true );
//    wp_enqueue_script( 'ajaxcalls', get_template_directory_uri() . '/js/ajax-calls.js', array(), '1.0.0', true );

	wp_localize_script( 'ajaxcalls', 'ajax_object', array(
			'ajaxurl' => admin_url( 'admin-ajax.php' ),
			'ajaxnonce' => wp_create_nonce( 'ajax_post_validation' )
		) );
	}

	add_action( 'wp_enqueue_scripts', 'add_ajax_scripts' );

	function custom_update_post() {     

		$user_id_pq = get_current_user_id();  
		$post_id_pq = mb_strimwidth( $_POST['post_id'] , 0, 15);
		$show_pq_arr = get_user_meta( $user_id_pq, 'piece_quality', true );         

		if ( isset($_REQUEST) ) { 
			// Выбрано стандартное значение 
			if ( $_POST['piece_qua'] == 0 ) {
				unset( $show_pq_arr[ $post_id_pq ] );
			// Выбрано кастомное значение - проверка перед обновлением БД 
			} else {
				if ( in_array( $_POST['piece_qua'] , array('1','2','3','4','5','6','7') ) && ctype_digit( $post_id_pq ) ) {
					$safe_val = $_POST['piece_qua'];
				} else {
					exit( 'ERROR' );
				}
				$show_pq_arr[ $_POST['post_id'] ] = $safe_val;
			}                   
			// echo json_encode($show_pq_arr); // вернуть и посмотреть данные 
			update_user_meta( $user_id_pq, 'piece_quality', $show_pq_arr ); 

			wp_die();
		}          

	}

	add_action( 'wp_ajax_custom_update_post', 'custom_update_post' );

JS

<script>      
				jQuery(document).ready( function($) {               
					// jQuery('#products-select').bind('change', function(event) {  
					jQuery('.piece-quality').on('change', function(evt) {
						var post_id = $(this).attr( 'forqual' );
						var selectVal = $('option:selected', this).attr('value'); // $("option:selected").val();
						//  var user_id = "<?php echo get_current_user_id(); ?>";
							$.ajax({
								type: 'POST',
								url: ajax_object.ajaxurl,
								data: {
									action: 'custom_update_post',
									post_id: post_id,
									piece_qua: selectVal
								},
								success:function(data) {
								// This outputs the result of the ajax request
								//  alert('data:'+data);
									console.log(data);
								},
								error: function(errorThrown){
								//  alert(errorThrown);
									console.log(errorThrown);
								}
							});
						});             
					});
				</script>
0
kolshix
1.4 года назад 779
  • 0
    el-lable620 el-lable.ru

    В post meta записывать массив где [user1_id => quality1, user2_id => quality2, ...]

    Комментировать
На вопросы могут отвечать только зарегистрированные пользователи. Вход . Регистрация