• Как установить обновление Jetbrains?

    @i4its
    Привет! Поделюсь своим опытом. Сделать, как рекомендовал Владислав Писарев у меня не вышло - все равно вылезала ошибка про санкции и туда сюда.
    У каждого плагина есть домашняя страничка. Перейти на неё можно прямо из IDE.
    66e0015240e0d020446000.png
    И вот с нее я скачал "свежий" файл для ручной установки(при скачивании появляется инструкция по установке).
    Удобно ли это - не очень. Работает ли - да!
    Ответ написан
    1 комментарий
  • Python для сайта на php, как подключить?

    erniesto77
    @erniesto77
    oop, rb, py, php, js
    обычно делают так. На pyhton делают api (с помощью Flask например).

    А из php вызывают методы этого api с помощью GuzzleHttp\Client например.

    Таким образом наступает мир во всем мире!
    Ответ написан
    Комментировать
  • Как пропустить итерацию foreach?

    @ArtemioVegas
    php developer
    используйте Continue для пропуска итерации в цикле
    <?php
    $arr = ["a","b","c","e"];
    foreach($arr as $value){
    	if ( $value === 'b' ) continue;
    	echo $value;
    }
    Ответ написан
    Комментировать
  • Ошибка - Uncaught (in promise) в Chrome. Что за ошибка и как ее исправить?

    @qskyhigh Автор вопроса
    Ошибка была из за приложения Wappalyzer Chrome, отключил и стало все нормально.
    Ответ написан
    Комментировать
  • Как упростить требования к сложности пароля - WordPress?

    Вот этим кодом, вставив его в functions.php, можно вообще отключить требования сложности
    function wc_ninja_remove_password_strength() {
    	if ( wp_script_is( 'wc-password-strength-meter', 'enqueued' ) ) {
    		wp_dequeue_script( 'wc-password-strength-meter' );
    	}
    }
    add_action( 'wp_print_scripts', 'wc_ninja_remove_password_strength', 100 );
    Ответ написан
    1 комментарий
  • Как сделать замену токенов в строке по ключам из массива?

    0xD34F
    @0xD34F
    echo preg_replace_callback('~\[(.+?)\]~', fn($m) => $array[$m[1]] ?? $m[0], $message);
    Ответ написан
    4 комментария
  • Как избавиться от дублирования кода PHP во вложенных условиях?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    if ((!isset($water) || $water === 'blue') && $fruit === 'banana') {
        $fruit->get_eat();
    }
    Ответ написан
    2 комментария
  • Как пересчитать dom Jquery?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Не надо ничего пересчитывать, вешайте обработчики на родительские элементы и используйте всплытие. Например, вместо $('.my-button').click(...) используйте $('#my-form').on('click', '.my-button', ...)
    Ответ написан
    1 комментарий
  • Как admeo.ru узнает номер телефона?

    @grivan2
    Добрый день! Поработал с компанией Адмео несколько месяцев. Яндекс увидел код на всех трёх сайтах и пессимизировал их в выдаче, пояснив, что это кликджекинг. Адмео дали другой код, который по их словам 100% не отлавливается. Яндекс опять отреагировал через два дня, указав на код. Договорились о возврате денег (остаток 8900). Мурыжили 1.5 месяца, но так ничего и не вернули. Это при почти ежедневных звонках менеджеру и нескольким письмам генеральному директору (Эрдниев Максим Борисович)! За слова отвечаю. Мой тел: 8(926)089-01-78. Будьте осторожны, при возникновении даже не больших проблем, Максим Борисович Эрдниев может Вас кинуть.
    Ответ написан
    1 комментарий
  • Как заставить работать стилизованный input type=number?

    $(function() {
    
        (function quantityProducts() {
            $(".quantity-arrow-minus").click(quantityMinus);
            $(".quantity-arrow-plus").click(quantityPlus);
          
            function quantityMinus() {
                let currentInput = $(this).parent().find('.quantity-num');
    
                if (currentInput.val() > 0) {
                    currentInput.val(+currentInput.val() - 1);
                }
            }
    
            function quantityPlus() {
              let currentInput = $(this).parent().find('.quantity-num');
    
              currentInput.val(+currentInput.val() + 1);
            }
        })();
    
    });


    или

    $(".quantity-block").each(function() {
      let currentInput = $(this).children('.quantity-num');
    
      $(this).children('.quantity-arrow-minus').click(function() {
        if (currentInput.val() > 0) {
          currentInput.val(+currentInput.val() - 1);
        }
      });
    
      $(this).children('.quantity-arrow-plus').click(function() {
        currentInput.val(+currentInput.val() + 1);
      });
    });
    Ответ написан
    Комментировать
  • Как исправить ошибку: $(...).owlCarousel is not a function?

    @Skrolea
    Сам то Owl подключили?
    Ответ написан
    Комментировать
  • Не работает обработчик php для бота Telegram?

    AlexanderShapoval
    @AlexanderShapoval
    PHP maker
    Что-бы получить запрос от телеграма - нужно использовать такую комбинацию:

    $request = json_decode(file_get_contents('php://input'), true);
    Ответ написан
    Комментировать
  • Какую использовать функцию для выборки из массива?

    //Это ваш код
    $array = array(
    "1" => array("id"=>"123", "name"=>"Alex"),
    "2"=>array("id"=>"322", "name"=>"Pasha"),....
    "22"=>array("id"=>"312", "name"=>"Lesha"),....);
    
    // используйте роямое обращение по ключу
    print_r($array[2]);
    print_r($array[22])
    //...etc
    
    //Или вам нужно и применение цикла? и что бы цикл выводил только заданные ключи?
    Ответ написан
    2 комментария
  • Какую использовать функцию для выборки из массива?

    Tomio
    @Tomio
    backend developer (python, php)
    $arr = [
    22 => 'one',    
    322 => 'two',   
    42 => 'three',   
    55 => 'four',   
    76 => 'five',   
    21 => 'six',   
    34 => 'seven',   
        ];
    
    $myKeys = [42, 76, 21];
    
    $newArr = array_filter($arr, function($key) use ($myKeys) {
        return in_array($key, $myKeys);
    }, ARRAY_FILTER_USE_KEY);
    
    print_r($newArr);
    /** result
    
    Array
    (
        [42] => three
        [76] => five
        [21] => six
    )
    **/
    Ответ написан
    1 комментарий
  • Не работает hover на Safari 5.1.7, как исправить?

    smanioso
    @smanioso
    Отмечайте ответы на свои вопросы!
    Судя по статистике, доля рынка данной версии Safari ~0.2 %
    Если это не требование ТЗ, то просто забейте на нее.
    Ответ написан
    Комментировать
  • Как поставить для SVG вместо fill - gradient?

    RAX7
    @RAX7
    <svg>
      <!-- Градиент -->
      <linearGradient id="linear-gradient">
        <stop offset="0%" stop-color="gold"/>
        <stop offset="100%" stop-color="teal"/>
      </linearGradient>
    
      <!-- Фигура с градиентной заливкой -->
      <rect fill="url(#linear-gradient)"
            width="100%" height="100%"/>
    </svg>

    css.yoksel.ru/svg-gradients
    Ответ написан
    1 комментарий
  • Отображение полей select в safari?

    no1s1a
    @no1s1a Автор вопроса
    Самый темный час - перед рассветом!
    В общем нашел решение, спасибо всем за оперативность и тд и тп (сарказм). Проблема решается не paddingom и не webkitами. А text-indent: 10px; Не понятно, почему гении из эйпл не научили свой браузер элементарным вещам!
    Ответ написан
    Комментировать
  • Как сделать заголовок с подчеркиванием под ним?

    daemonhk
    @daemonhk
    ПсиХоПат
    Как-то так:

    .luchshee-title{
        font-size:20px;
        display:inline-block;
        position:relative;
        z-index:3;
    }
    .luchshee-title:after{
        display: block;
        content: '';
        background: #fedd00;
        width: 100%; //не используйте волшебные числа, типа 314
        height: 11px;
        position: absolute;
        margin: -20px 0 0 -15px;
        z-index:-1; //Прячем элемент под родителя
    }

    div class="luchshee-title">Лучшее предложение</div>
    Ответ написан
    1 комментарий
  • Как перенести кусочек значения массива в его ключ на php?

    Compolomus
    @Compolomus Куратор тега PHP
    Комполом-быдлокодер
    $new = [];
    foreach($arr as $val) {
    $i = explode(';', $val);
    $new[$i[0]] = trim(end($i));
    }
    Ответ написан
    8 комментариев
  • Плагин для добавления автоматических отзывов WordPress?

    Обычно свои наработки не выкладываю, но вот держите:

    Сама html-форма:
    html-код
    <form class="form-wrapper reviews-form" id="reviews-form">
    					<h3>Оставить отзыв</h3>
    					<div class="reviews-form__row">
    						<div class="form-wrapper__group">
    							<input type="text" name="name" value="" placeholder="Ваше имя" required>
    						</div>
    						<div class="form-wrapper__group">
    							<input type="text" name="email" value="" placeholder="Ваш e-mail" required>
    						</div>
    						<div class="reviews-form__mark-wrapper">
    							<ul class="reviews-form__marks-list">
    								<li><button class="green" data-review-mark="positive"><img src="<?php echo get_template_directory_uri(); ?>/images/svg/happy.svg" alt="Положительный" class="svg"></button></li>
    								<li><button class="yellow" data-review-mark="medium"><img src="<?php echo get_template_directory_uri(); ?>/images/svg/surprised.svg" alt="Удовлетворительный" class="svg"></button></li>
    								<li><button class="red" data-review-mark="negative"><img src="<?php echo get_template_directory_uri(); ?>/images/svg/sad.svg" alt="Отрицательный" class="svg"></button></li>
    							</ul>
    						</div>
    					</div>
    					<div class="reivews-form__message-wrapper">
    						<textarea name="message" placeholder="Ваш отзыв" required></textarea>
    						<input type="hidden" name="rating" value="" required>
    					</div>
    					<button type="submit" class="button button--green">Оставить отзыв</button>
    				</form>

    Обработчики форм:
    /**
          * @module       Marks
          * @description  Выставление оценки в форме
          */
         $('button[data-review-mark]').on('click',function(e){
           e.preventDefault();
           $('button[data-review-mark]').removeClass('active');
           $(this).addClass('active');
           $('#reviews-form').find('[name="rating"]').val($(this).attr('data-review-mark'));
         });

    /**
         * @module       Добавление отзыва
         * @description  Добавление отзыва
         */
        $('#reviews-form').submit(function(e) {
          e.preventDefault();
          $.ajax({
            type: "POST",
            url: "/api/newreview.php",
            data: $(this).serialize(),
            success: function(){
              $('#successreviewmodal').modal('show');
            },
            error: function() {
              $('#errormodal').modal('show');
            }
          });
        });



    Так как запрос отсылается на /api/newreview.php, то по этому адресу у вас должен располагаться этот файл со следующим кодом:

    Код newreview.php:
    <?php
    ini_set("display_errors",1);
    error_reporting(E_ALL);
    
    // *
    // Подключаем все файлы для работы
    // *
    require_once( $_SERVER['DOCUMENT_ROOT'].'/wp-load.php');
    require_once( ABSPATH . 'wp-admin/includes/image.php' );
    require_once( ABSPATH . 'wp-admin/includes/file.php' );
    require_once( ABSPATH . 'wp-admin/includes/media.php' );
    
    
    $user_name = trim($_POST['name']);
    $user_mail = trim($_POST['email']);
    $message = trim($_POST['message']);
    $rating  = trim($_POST['rating']);
    
    $post_data = array(
    	'post_title'    => 'Отзыв #' . uniqid(),
    	'post_content'  => $message,
    	'post_status'   => 'pending',
    	'post_author'   => 1,
      'post_type'     => 'reviews'
    );
    
    // Вставляем запись в базу данных
    $post_id = wp_insert_post( $post_data );
    // *
    // Добавляем все дополнительные поля
    // *
    update_field( 'rating', $rating, $post_id );
    update_field( 'author', $user_name, $post_id );
    update_field( 'e-mail', $user_email, $post_id );
    
    
    
    ?>



    Так как у нас пост добавляется в кастомный тип записей, нужно его сначала создать. Для этого в файл functions.php добавляем следующее:

    Кастомный тип записей
    /**
     * Кастомный тип записей:  Отзывы
     */
    function create_posttype_reviews() {
      register_post_type( 'reviews',
        array(
          'labels' => array(
            'name' => __( 'Отзывы' ),
            'singular_name' => __( 'Отзывы' )
          ),
          'public' => true,
          'has_archive' => false,
          'rewrite' => array('slug' => 'reviews'),
        )
      );
    }
    add_action( 'init', 'create_posttype_reviews' );



    На этом все. В админке wordpress у вас появится новый блок меню "Отзывы", куда и будут попадать все отзывы. В качестве бонуса, могу вам прикрепить код, который надо поместить в functions.php, благодаря которому, боявится балун с количеством неопубликованных отзывов (так проще их отслеживать):

    php код
    /**
     * Уведомления о новых неопубликованных постах
     */
    
    add_action( 'admin_menu', 'add_user_menu_bubble' );
    function add_user_menu_bubble(){
    	global $menu;
    
    	// Отзывы
    	$count = wp_count_posts('reviews')->pending; // на подтверждении
    	if( $count ){
    		foreach( $menu as $key => $value ){
    			if( $menu[$key][2] == 'edit.php?post_type=reviews' ){
    				$menu[$key][0] .= ' <span class="awaiting-mod"><span class="pending-count">' . $count . '</span></span>';
    				break;
    			}
    		}
    	}
    }



    P.S не забудьте проверять всю информацию, поступающую от клиента.

    UPD: забыл добавить, чтобы отзывы где-то выводились, вам нужно в каком-то месте шаблона их вывести:

    WP Loop
    <?php
    							$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
    							query_posts(array(
    								'post_type' => 'reviews',
    								'posts_per_page' => -1,
    								'paged' => $paged,
    							));
    						?>
    						<?php if ( have_posts() ) : ?>
    							<?php $i = 1; ?>
    							<?php while ( have_posts() ) : the_post(); ?>
    								<div class="col-lg-6">
    									<?php echo get_template_part('template-parts/content','review'); ?>
    								</div>
    								<?php $i++; ?>
    
    
    							<?php endwhile; ?>
    						<?php endif; ?>
    						<?php wp_reset_postdata(); ?>



    Так же прошу заметить, что при добавлении нового отзыва (файл newreview.php), в этом блоке кода:
    $post_data = array(
    	'post_title'    => 'Отзыв #' . uniqid(),
    	'post_content'  => $message,
    	'post_status'   => 'pending',
    	'post_author'   => 1,
      'post_type'     => 'reviews'
    );

    указано: 'post_status' => 'pending',, что означает добавление всех новых отзывов со статусом На модерации, если нужно отключить эту настройку, то поставьте 'post_status' => 'publish',
    Ответ написан
    7 комментариев