• Можно ли сделать лотерею в WP?

    maxxannik
    @maxxannik
    Сайты на WordPress + Интернет магазины WooCommerce
    На WP можно сделать все что угодно.
    Джуниоры - способны только говносайты лепить.
    Сеньоры - могут хоть кофеварки автоматизировать и ракеты в космос запускать.
    Возможности ограничены только тем что между полушарий у разработчика.
    Однако хорошие спецы стоят денег. И без бюджета от 500 тр и выше - лучше даже не начинать. За копейки работать согласятся только доширакеры, а сделать что либо толковое с такими ребятами шансов мало.
    Ответ написан
    2 комментария
  • Как связать 2 таксономии?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    Обычно это делается через гет-запросы. Например у вас ссылка /repair/?brand=rus, на хуке pre_get_posts проверяете таксономию и гет-переменную и фильтруете записи для вывода

    Для корректной работы переменную нужно зарегистрировать, если ее нет

    add_filter( 'query_vars', 'add_query_vars' );
    function add_query_vars( $qvars ) {
    	$qvars[] = 'brand';
    	return $qvars;
    }


    Добавить в ссылку гет-переменную можно с помощью функции add_query_arg()

    $link = add_query_arg( [ 'brand' => 'rus' ], $cur_link );


    Получить гет-запрос можно с помощью get_query_var() и отфильтровать по примеру

    add_action( 'pre_get_posts', 'filter_pre_get_posts', 1 );
    function filter_pre_get_posts( $query ) {
    
    	// Выходим, если это админ-панель или не основной запрос
    	if ( is_admin() || ! $query->is_main_query() ) {
    		return;
    	}
    
    	// Выбираем записи с GET запросами brand
    	if ( $query->is_tax( 'repair' ) && get_query_var( 'brand', false ) ) {
    		
    		$tax_query = [];
    
    		$tax_query['tax_query'][] = [
    			'taxonomy' => 'brands',
    			'field' => 'slug',
    			'terms' => get_query_var( 'brand', false ),
    		];
    
    		$query->set( 'tax_query', $tax_query );
    
    	}
    
    }
    Ответ написан
    4 комментария
  • Как ограничить количество сайтов на WordPress мультисайт?

    V_A_B
    @V_A_B
    ¯\_(ツ)_/¯
    Доброго времени суток.
    Если открыть файл wp-admin\network\site-new.php, то можно проследить как идет обработка:
    Разработчики напрямую проверяют акшн и передачу данных без каких-либо крючков
    if ( isset( $_REQUEST['action'] ) && 'add-site' === $_REQUEST['action'] ) {

    после условия идет проверка check_admin_referer
    т.е. мы можем приконектиться к этой проверки и запретить создание
    Примеры

    // 1
    add_action('check_admin_referer',function($action){
    	$blog_count=get_blog_count();
    	if(is_network_admin()&&isset($_REQUEST['action'])&&'add-site'===$_REQUEST['action']&&$blog_count==2){
    		wp_die(__('Достигнут лимит','VAB'));
    	}});
    
    // 2
    $blog_count=get_blog_count();
    if(is_network_admin()&&isset($_REQUEST['action'])&&'add-site'===$_REQUEST['action']&&$blog_count==2){
        add_action('check_admin_referer',function($action){
            // if('add-blog'!==$action){return;}
            wp_die(__('Достигнут лимит','VAB'));
        });}
    
    // ... другие аналоги



    Варианты так себе:
    Помимо в конце файла есть do_action( 'network_site_new_form' ); перед выводом в разметке кнопки для создания и далее подключаются стили и скрипты. Можно воспользоваться add_action('network_site_new_form' и остановить все, что после
    Пример

    копки для создания не будет, а так же не подключится футер
    require_once ABSPATH . 'wp-admin/admin-footer.php';


    сам вариант собственно:
    add_action('network_site_new_form','action_function_name_6729');
    function action_function_name_6729(){
    	$blog_count=get_blog_count();
    	if($blog_count==2){exit();}
    }


    ну и как вариант мы можем полностью заглушить страницу через admin_print_scripts-site-new.php
    правда создан акшн для подключения скриптов
    Пример

    add_action("admin_print_scripts-site-new.php",'my_admin_scripts');
    function my_admin_scripts(){
      $blog_count=get_blog_count();
      if($blog_count==2){
    		exit('<center><strong style="font-size:33px;">'.__('Достигнут лимит создания поддоменов','VAB').'</strong></center>');}}



    может, кто ещё добавить варианты...
    Ответ написан
    1 комментарий
  • Как сделать вращение объекта по горизонтали через hammer.js?

    Alexandroppolus
    @Alexandroppolus
    кодир
    да тут без всякого хаммера можно обстряпать.
    обычный драг-н-дроп.

    при nousedown запоминаешь в переменную Х, где был курсор мыши, и в переменную A - угол поворота, который был в этот момент.
    при mousemove - берешь разницу текущего Х и сохраненного при старте (допустим, это число D), и делаешь текущий угол поворота равным A + k*D, где вещественное k подобрать по вкусу (чем больше, тем быстрее вращается).
    mouseup - отписка от событий mousemove и mouseup, прекращение драгндропа.
    всё как всегда, в общем.
    Ответ написан
    3 комментария
  • Как задать минимальное и максимальное количество строк повторителя ACF через переменную?

    Chefranov
    @Chefranov
    Новичок
    Если правильно понял, то у тебя есть такое:
    'min' => '',
    'row_limit' => '',

    Соответственно сюда подставляешь свои переменные
    $myfield1 = the_field('text_field');
    $myfield2 = the_field('text_field2');
    
    'min' => $myfield1,
    'row_limit' => $myfield2,
    Ответ написан
  • Как создать пост из Frontend?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    Добрый день!

    1) Готовые плагины -
    https://ru.wordpress.org/plugins/user-submitted-posts/
    https://ru.wordpress.org/plugins/wp-recall/
    Подозреваю, что они вам не подойдут...
    2) Использовать ACF, как вы и сказали...
    https://www.advancedcustomfields.com/resources/cre...
    https://www.advancedcustomfields.com/resources/acf...
    https://awesomeacf.com/how-to-use-advanced-custom-...

    Пример реализации публикации отзывов на одном из моих сайтов:
    Содержимое шаблона
    <?php /* Template Name: Add testimonial */ ?>
    <?php 
    acf_form_head();
    get_header();
    ?>
    
        <?php
    	
    	acf_form(array(
    		'post_id'		=> 'new_post',
    		'post_title'	=> false,
    		'post_content'	=> true,
    		'new_post'		=> array(
    			'post_type'		=> 'testimonial',
    			'post_status'	=> 'draft'
    		),
    		'return'		=> home_url('thank-you'),
    		'submit_value'	=> 'Опубликовать'
    	));
    	
    	?>
    <?php get_footer(); ?>


    post_type - укажите post
    post_status укажите свой вариант. у меня draft (черновик)
    post_title - можете включить если нужно
    post_content - можете включить если нужно
    return - страница редиректа после отправки формы.

    Насчет того, как именно задать post_title из кастомного поля:
    Примеры:
    https://support.advancedcustomfields.com/forums/to...
    https://support.advancedcustomfields.com/forums/to...
    www.telegraphicsinc.com/2013/07/how-to-add-new-pos...
    Ответ написан