• Какой должен быть сертификат для связи Websocket по ssl?

    DrZhmurge
    @DrZhmurge Автор вопроса
    Была проблема с файлом PRIVATE KEY. Все время возникала ошибка
    unable to load Private Key
    139633364686736:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:707:Expecting: ANY PRIVATE KEY

    Смена кодировки в notepad, расширения, ни к чему не приводили. Пока не заметил что в сертификате переносы строк сохраняются как CR LF. А в ключе просто как CR (для того, чтобы увидеть включите "отображать все символы" в настройках).
    620a22a490a36477267271.jpeg
    Не стал заморачиваться, а просто скопировал ключ вместо сертификата и сохранил его, чтобы встала кодировка.
    После этого все проверки прошли успешно и сертификат начал работать.
    Ответ написан
    Комментировать
  • Как добавить поле поиска записи или таксономии в админке Wordpress или Woocommerce?

    DrZhmurge
    @DrZhmurge Автор вопроса
    переопределяем функцию которую дата указана в "data-action", на любую кастомную.
    У меня: data-action="search_posts".
    Далее создаем функцию search_posts:

    add_action('wp_ajax_search_posts', 'search_posts');
    function search_posts()
    {
    	$s = $_GET['term']; //получает данные введенного текста для поиска
    	$args = array(
    		'post_type' => 'collection',  //ваш тип поста
    		's' => $s, //поисковый запрос
    	);
    	$data = [];
    	$loop = new WP_Query($args);
    	if ($loop->have_posts()) {
    		while ($loop->have_posts()) {
    			$loop->the_post();
    			$post_id = get_the_id(); //получаем id записи
    			$post_name = get_the_title(); //получаем title записи
    			$data[$post_id] = $post_name; // добавляем в массив data
    		}
    	}
    	echo json_encode($data); //кодируем в json и выводим
    	wp_die(); //иначе 0 в конце всегда лишний в выводе
    }


    Далее меняем вывод нужных нам данных уже в самом поле select. Приведу в пример полный код select, чтобы не запутаться:
    <select id="product_field_type" name="product_field_type[]" class="wc-product-search" multiple="multiple" style="width: 50%;" data-placeholder="<?php esc_attr_e('Поиск по названию коллекции', 'woocommerce'); ?>" data-action="search_posts">
    					<?php
    					$product_ids            = [];
    					$product_field_type_ids = get_post_meta(get_the_ID(), '_product_field_type_ids', true);  //сменил $post->ID на get_the_ID()
    					
    					if (!empty($product_field_type_ids)) {
    						$product_ids = array_map('absint', $product_field_type_ids);
    					}
    
    					if ($product_ids) {
    						foreach ($product_ids as $product_id) {
    							//$product = new WP_Query($product_id);  больше не нужен
    							
    							echo sprintf(
    								'<option value="%s" %s>%s</option>',
    								esc_attr($product_id),
    								selected(true, true, false),
    								esc_html(get_the_title($product_id)) //получаем нужный нам title по id записи
    							);
    						}
    					}
    					?>
    				</select>
    Ответ написан
    Комментировать
  • Репозиторий github пустой после git push -u origin master. Почему?

    DrZhmurge
    @DrZhmurge Автор вопроса
    Разобрался. Видимо по причине большого размера репозитория через https ничего не пушится. Через ssh все ок.
    Ответ написан
    Комментировать
  • Как вывести товары в Woocommerce группами?

    DrZhmurge
    @DrZhmurge Автор вопроса
    Использовал плагин "Woocommerce Advanced Categories". Дополнительно нужен "Redux Framework" плагин. Там есть функция "Nested Categories", которая позволяет выводить информацию о категории перед товарами этой категории в каталоге. Дальше просто стилями скрыл все что мне не нужно и оставил название категории.
    Ответ написан
    Комментировать
  • Как объединить 2 массива в php?

    DrZhmurge
    @DrZhmurge Автор вопроса
    Хороший пример от green_goo, в котором описано все что нужно:
    $val2 = [['HOUR' => '10', 'MINUTE' => '30'], ['HOUR' => '11', 'MINUTE' => '00']];
    var_dump(array_map(function ($a) { return $a['HOUR'].':'.$a['MINUTE']; }, $val2));
    Ответ написан
    Комментировать
  • Как отправить значения из input в cURL запросе к API и получить ответ?

    DrZhmurge
    @DrZhmurge Автор вопроса
    Код который посылает запрос к контроллеру и получает ответ
    <script>
    	(function($) {
    		$(document).ready(function(){
    			if( $('#wpforms-form-446').length ) {
    				$('#wpforms-submit-446').prop('disabled', true);
    				$('#wpforms-446-field_21, #wpforms-446-field_3').change(function(){
    					check();
    				});
    				$('#wpforms-form-446 .wpforms-field-container').append('<div id="errs"></div>');
    
    				$('#wpforms-submit-446').click(function(event){
    					if( $('#wpforms-submit-446').prop('disabled') )
    						return;
    
    					let email = $('#wpforms-446-field_3').val();
    					let phone = $('#wpforms-446-field_21').val();
    					let password = $('#wpforms-446-field_4').val();
    					let name = $('#wpforms-446-field_1').val();
    
    					if( email.length == 0 || phone.length == 0 )
    						return;
    
    					$.ajax({
    					  method: "POST",
    						dataType : 'json',
    					  url: "/api.php?create-user",
    					  data: { email: email, phone: phone, password: password, name: name }
    					})
    				  .success(function( msg ) {
    						$('#errs').html('');
    						console.log(msg)
    				  });
    				});
    
    				function check() {
    					let email = $('#wpforms-446-field_3').val();
    					let phone = $('#wpforms-446-field_21').val();
    					if( email.length == 0 || phone.length == 0 )
    						return;
    
    					$.ajax({
    					  method: "POST",
    						dataType : 'json',
    					  url: "/api.php?has-user",
    					  data: { email: email, phone: phone }
    					})
    				  .success(function( msg ) {
    						$('#errs').html('');
    						let b_error = false;
    						if( msg.error !== undefined ) {
    							let error = msg.error;
    							for (var variable in error) {
    								b_error = true;
    								$('#errs').append('<label class="wpforms-error">'+error[variable]+'</label>');
    							}
    						}
    						else {
    							if( msg.result !== undefined && msg.result == true ) {
    								b_error = true;
    								$('#errs').append('<label class="wpforms-error">Пользователь существует. <a href="https://a-n-h.space/rm_login/">Войти</a></label>');
    							}
    						}
    
    						if( b_error == false ) {
    							$('#wpforms-submit-446').prop('disabled', false);
    						}
    				  });
    				}
    			}
    		});
    	})( jQuery );
    </script>
    Ответ написан
    Комментировать
  • Как получать доступ к данным через php из json массива?

    DrZhmurge
    @DrZhmurge Автор вопроса
    Для начала json прогнал через $json_array = json_decode($response, true); (именно с включением второго параметра в true. В итоге получается обычный ассоциативный массив. Ну и дальше через foreach в таком виде
    foreach ($json_array as $table => $rows) {
      foreach ($rows as $time => $half_time) {
        foreach ($half_time as $info => $value) {
          foreach ($value as $value2 => $value3) {
      echo $value3;
          }
      }
    }
    }
    Ответ написан
    Комментировать
  • Как вывести в каталоге Woocommerce вариации товара с ценой и корзиной напротив для каждой?

    DrZhmurge
    @DrZhmurge Автор вопроса
    В файле woocomerce/template/content-product.php после do_action( 'woocommerce_after_shop_loop_item_title' );
    нужно вставить следующий код:
    $args = array(
      'post_type'     => 'product_variation',
      'post_status'   => array( 'private', 'publish' ),
      'numberposts'   => -1,
      'orderby'       => 'menu_order',
      'order'         => 'ASC',
      'post_parent'   => get_the_ID() // get parent post-ID
    );
    $variations = get_posts( $args ); 
     
    foreach ( $variations as $variation ) {
      
      // get variation ID
      $variation_ID = $variation->ID;
     
      // get variations meta
      $product_variation = new WC_Product_Variation( $variation_ID );
     
      // get variation featured image
      $variation_image = $product_variation->get_image();
     
      // get variation price
      $variation_price = $product_variation->get_price_html();
           //get variation name
      $variation_name = $product_variation->get_variation_attributes();
    echo "<p class='product_price' >";
    if ( $variation_name [ 'attribute_pa_СЛАГ_АТРИБУТА' ] ) {
        $fasovka = [ 'attribute_pa_СЛАГ_АТРИБУТА' => $variation_name [ 'attribute_pa_СЛАГ_АТРИБУТА'] ];
        echo wc_get_formatted_variation ( $fasovka );
    }
    echo ($variation_price);
    echo "</p>";
    }
    Ответ написан
    3 комментария