• Стоит ли пользоваться elementor и wp bakery, или как конкурировать с теми, кто с подвешенным языком и пользуется?

    @Xell531
    Работаю в студии уже несколько лет, сам всё организовывал с нуля, учился без всяких курсов, сам, по ютубу. Имею уже достаточно большое портфолио. Поделюсь опытом для Вашего "накипело". Дочитать до конца - меньше половины дела, главное осмыслить.
    Работа есть и есть всегда. Почему?

    Во-первых благодаря именно тому, что в штате есть человек "с подвешенным языком", который умеет убеждать клиента и очень долго с ним общаться, торговаться - у меня на это не хватает ни сил, ни языка, ни терпения. Это рынок! Не умеете - ищите того, что умеет и платите ему!
    Во-вторых - именно гибкий подход, цены и сжатые сроки помогают склонить клиента в пользу нашей студии. Мы используем и Elementor, и BB, и другие конструкторы, но и внедряем достаточно много своего кода, но коды эти наработаны годами и лежат в закладках по принципу копипаста. Получается и быстро, и индивидуально.
    В-третьих именно благодаря тем, кто делает дёшево и как попало - очень много случаев, когда к нам обращаются именно переделать сайт или сделать новый.

    А самое главное - на первом месте грамотно сделанная реклама в Яндекс и Google. Для этого тоже нужен свой специалист, так как съедает это колоссальное количество времени. Именно реклама приводит на сайт посетителей и только на втором месте уже качество сайта. Тут неважно на чём он сделан, главное, чтобы он конвертировал заявки и заказы от посетителей. Самый хороший, быстрый и качественный сайт может быть абсолютно бесполезен, в то время, как сделанный "на коленке" будет приносить прибыль клиенту, а для него это самое главное.

    А теперь скажу Вам самое неприятное - рынку и потенциальным клиентам пофиг, что Вам нравится или не нравится, насколько вы честный, как Вы делаете сайты, какой Вы грамотный специалист, насколько крут и сколько дипломов имеете. Людям нужно дешевле и "ещё вчера". Сейчас Выигрывает не тот, кто умнее, а тот, кто быстрее всех переучивается. Именно 10% знаний приносят 90% результата, и никак не наоборот. Поэтому однозначно стоит осваивать конструкторы и CRM. К тому же, Elementor освоить достаточно легко и быстро.

    Я начинал так же, как и многие. Так же писал в коде. Знаю отлично html, css. Знаю, как считаю, достаточно неплохо php, js, jquery. Работал на Joomla, Drupal, DLE, MODx, всего и не вспомню. Но работаю в конструкторах с этими знаниями. И даже этого опыта не хватает, так как современный рынок требует делать ещё быстрее, а быстрее - значит дешевле.

    Вы должны понимать три вещи:
    1.) Что нужно клиенту.
    2.) Сколько он готов заплатить за работу.
    3.) Во сколько Вы оцениваете свою работу, навыки, знания. (Проще, какую зарплату хотите иметь).
    И исходя из этого выбирать инструменты, которыми будете реализовывать задачу.

    Я всем всегда объясняю, что качественно и дёшево - это в разные стороны и показываю примеры. А дальше уж клиент сам решает, что ему надо.
    А уж если будет результат - Вас сами будут рекомендовать.
    Ответ написан
    Комментировать
  • Почему не скачивается сайт через wget -r?

    @paradoxnumber7
    --user-agent=opera -e robots=off
    Ответ написан
    Комментировать
  • Как изменить структуру дочернего пункта меню в Wordpress?

    AntonLitvinenko
    @AntonLitvinenko
    HTML coder
    Изменение разметки производится путем изменения класса walker_nav_menu
    https://misha.agency/wordpress/nav-menu-walkers.html

    Готовый код

    <?php
    
    class Header_Walker_Nav_Menu extends Walker_Nav_Menu {
    
    	function start_lvl( &$output, $depth = 0, $args = NULL ) {
    		$output .= '<ul class="submenu sub-menu">';
    	}
    
    	function start_el( &$output, $item, $depth = 0, $args = NULL, $id = 0 ) {
    		//global $wp_query;
    
    		$indent = ( $depth ) ? str_repeat( "\t", $depth ) : '';
    
    		$class_names = $value = '';
    		$classes = empty( $item->classes ) ? array() : (array) $item->classes;
    		$classes[] = 'menu-item-' . $item->ID;
    
    		if ($args->walker->has_children) {
    			$classes[] = 'has-dropdown';
    		}
    
    		// функция join превращает массив в строку
    		$class_names = join( ' ', apply_filters( 'nav_menu_css_class', array_filter( $classes ), $item, $args ) );
    		$class_names = ' class="' . esc_attr( $class_names ) . '"';
    
    		$id = apply_filters( 'nav_menu_item_id', 'menu-item-'. $item->ID, $item, $args );
    		$id = strlen( $id ) ? ' id="' . esc_attr( $id ) . '"' : '';
    
    		$output .= $indent . '<li' . $id . $value . $class_names .'>';
    
    		// атрибуты элемента, title="", rel="", target="" и href=""
    		$attributes  = ! empty( $item->attr_title ) ? ' title="'  . esc_attr( $item->attr_title ) .'"' : '';
    		$attributes .= ! empty( $item->target )     ? ' target="' . esc_attr( $item->target     ) .'"' : '';
    		$attributes .= ! empty( $item->xfn )        ? ' rel="'    . esc_attr( $item->xfn        ) .'"' : '';
    		$attributes .= ! empty( $item->url )        ? ' href="'   . esc_attr( $item->url        ) .'"' : '';
    
    		// ссылка и околоссылочный текст
    		$item_output = $args->before;
    		if ($args->walker->has_children) {
    			$item_output .= '<span class="opener"><a'. $attributes .'>';
    		} else {
    			$item_output .= '<a'. $attributes .'>';
    		}
    
    		$item_output .= $args->link_before . apply_filters( 'the_title', $item->title, $item->ID ) . $args->link_after;
    
    		if ($args->walker->has_children) {
    			$item_output .= '</a></span>';
    		} else {
    			$item_output .= '</a>';
    		}
    
    		$item_output .= $args->after;
    
    		$output .= apply_filters( 'walker_nav_menu_start_el', $item_output, $item, $depth, $args );
    	}
    }


    Для понимания как это работает, берем прямо копируем весь класс walker_nav_menu и там где нужно делаем манипуляции. Конкретно в этом коде добавлен класс submenu к выпадающему меню, добавлен класс has-dropdown к элементу li, внутри которого будет выпадающее меню и завернуты в span с классом opener ссылки, если у родительского li есть выпадающее меню.

    В принципе, если вам нужно пункт меню у всех завернуть, то можно поступить следующим образом
    <?php
    	wp_nav_menu(
    		array(
    			'theme_location'  => 'main-menu',
    			'menu'            => '', 
    			'container'       => false, 
    			'menu_class'      => 'main-menu', 
    			'depth'           => 2,
    			'before'          => '<span class="opener">',
    			'after'           => '</span>',
    			//'walker'          => new Header_Walker_Nav_Menu,
    		)
    	);
    ?>

    В этом случае разметка добавится во всех пунктах меню, независимо, есть у нее подменю или нет.
    Ответ написан
    3 комментария