• Есть ли какие-то сервисы для натяжки html на WP?

    iiiBird
    @iiiBird Куратор тега HTML
    Пока ты спишь - твой конкурент совершенствуется
    такой сервис называется фриланс https://freelance.habr.com/
    Ответ написан
    Комментировать
  • Как сегодня писать сайты?

    Epsiloncool
    @Epsiloncool
    Программер, веб-девелопер, гейм-девелопер
    Нормальный вопрос, вспомните себя в молодости: какие были наполеоновские планы по захвату мира? У каждого такие были (а у некоторых даже ещё есть). Но я не буду писать что-то на тему "автор школьник, гыыы", а возьму и отвечу. Потому что я в теме с 2001 года и, кажется, понимаю о чём вопрос.

    Подавляющему количеству бизнесов сегодня не нужен сайт. Инста и фейсбук отлично продают физические товары и услуги. Более половины предпринимателей, тех, которым я лет 5-6 назад делал сайт, сейчас успешно продаются в VK, инсте или FB и ничего не хотят слышать про "свой собственный сайт".

    Большинство из оставшихся не нуждаются в сложных многостраничных сайтах. На самом деле, есть статистика, что простые одностраничные сайты продают в 2-5-10 раз лучше, чем многостраничники. Пользователю просто некуда уходить - там есть самая главная информация о продукте и кнопка "заказать". Он прочитал и заказал. Если пользователь начинает бродить по сайту, он устаёт, его мозг "забивается" и он решает отложить покупку "на потом". Этих предпринимателей успешно закрывают Викс, ЛПгенератор, Тильда и прочие многочисленные "кон стру кторы сайтов". Сделать "сайт" на этих платформах сможет даже школьник (и они делают). Это работа точно не для профессиональной студии разработки сайтов.

    Что делать, если людям нужно продавать больше, чем один товар? Ещё одна требовательная категория - это потенциальные владельцы интернет-магазинов. Раньше был мощный пласт разработки - это как раз таки разработка интернет-магазина. И этот пласт, как вы, наверное, догадались, почти закрыт сервисами.

    И вот сюда, в принципе, вы можете пойти. Ещё не все потребности закрыты. Можно делать модули для OpenCart, допиливать магазы на Woocommerce, есть такой удобный SaaS-сервис Shopify, который тоже имеет API и поддерживает сторонние модули - есть где порезвиться.
    Но опять-таки это не разработка с нуля.

    Многие студии концентрируются на разработке уникального дизайна сайта. Тема интересная и в своё время была довольно прибыльной. Но сегодня в интернетах куча готовых шаблонов, из которых 98% бизнесов выбирают себе дизайн и немножко поднастроив, получают уникальный сайт. Вы можете попробовать зайти сюда, но придётся довольно долго искать хорошего клиента.

    А вот куда можно реально пойти - это разработка больших программных продуктов. Таких заказов мало, куда меньше, чем владельцев микро-бизнесов. Это разработка SaaS, главным образом. Разработка маркетплейсов, сервисов и всё такое прочее, что ещё долго не будет закрыто конструкторами. И вы можете использовать для этого симфони, даже WP и CodeIgniter. Если есть мощь и знание - можете попробовать использовать Nodejs или даже Go.
    Опять-таки скажу ещё раз, что в этой теме не очень много заказов, но все они стоящие. И часто приходится делать не на том, на чём вы привыкли, а на том, что требует сам сервис. Обычно это включает в себя много разных технологий - морда на React, Vue, Angular, основной бэкенд на Nodejs или Go (никаких CMS!), как правило, сразу заказывают и мобильное приложение - так что будьте готовы делать. На первых порах можете проехать на PhoneGap, но часто это решение не годится, заказчики пошли умные, умеют гуглить.

    В общем, вперёд. И самое главное, что я хотел бы сказать - если вы будете рассчитывать на много простых заказов, то не преуспеете, с большой вероятностью. Потому что простые заказы умеет делать каждый школьник, а у него больше свободного времени и не надо платить зарплату подрядчикам, так что он вас победит.
    Нужно идти туда, где школьники не справляются в одиночку - там, где нужно много современных технологий одновременно. Вот где золотая жила для IT компаний.

    Удачи!
    Ответ написан
    2 комментария
  • На чем сверстать сайт?

    @antonwx
    Тильда - такое говнище, жесть. Лучше на юкозе сделай.
    Ответ написан
    Комментировать
  • Как сделать в помощью ACF Flexible content подобие конструктора страниц?

    AntonLitvinenko
    @AntonLitvinenko Автор вопроса
    HTML coder
    Для себя вопрос пока что решил таким образом
    Создал темплейт страницы для этого дела
    <?php 
    
    get_header(); 
    
    /*
    Template Name: Page Builder
    */
    
    ?>
    
    <?php if ( have_rows( 'builder_layout' ) ) : ?>
    
    	<?php while ( have_rows( 'builder_layout' ) ) : the_row(); ?>
    
    		<?php $layout = get_row_layout(); ?>
    
    		<?php get_template_part( "template-parts/builder-blocks/$layout" ); ?>
    
    	<?php endwhile; ?>
    
    <?php else: ?>
    
    		<h2><?php _e('No layout found parent', 'ajat') ?></h2>
    
    <?php endif; ?>
    
    
    <?php get_footer(); ?>

    В папке builder-blocks у меня пять файлов, полная ширина, одна колонка, две колонки, три колонки и 4 колонки.
    Вот например код файла на 2 колонки, остальные по аналогии
    <section class="section">
    	<div class="container">
    
    		<div class="row">
    
    			<div class="col-md-6">
    				<div class="content">
    					<?php if ( have_rows( 'column_1_page_layout' ) ) : ?>
    
    						<?php while ( have_rows( 'column_1_page_layout' ) ) : the_row(); ?>
    
    							<?php $layout = get_row_layout(); ?>
    
    								<?php get_template_part( "template-parts/acf-blocks/$layout" ); ?>
    
    						<?php endwhile; ?>
    
    					<?php else: ?>
    
    						<h2><?php _e('No layout found', 'ajat') ?></h2>
    
    					<?php endif; ?>
    				</div>
    			</div>
    
    			<div class="col-md-6">
    				<div class="content">
    					<?php if ( have_rows( 'column_2_page_layout' ) ) : ?>
    
    						<?php while ( have_rows( 'column_2_page_layout' ) ) : the_row(); ?>
    
    							<?php $layout = get_row_layout(); ?>
    
    								<?php get_template_part( "template-parts/acf-blocks/$layout" ); ?>
    
    						<?php endwhile; ?>
    
    					<?php else: ?>
    
    						<h2><?php _e('No layout found', 'ajat') ?></h2>
    
    					<?php endif; ?>
    				</div>
    			</div>
    
    		</div>
    	</div>
    </section>

    Тут у меня в каждой колонке уже выводятся темплейты из другой папки acf-blocks, это как раз те кусочки кода, например иконка + текст, просто текст, текст + изображение итд.
    Для каждого блока создана группа полей.

    Главная группа полей для билдера builder_layout. Это гибкое содержимое.
    В нем 5 блоков соответственно одной колонке, двум, трем итд, вот скриншот места с двумя колонками
    5fa3c04f46509011229880.png
    Можно заметить кое-какие поля которых нет в стандарте, в частности деление на колонки, это замечательный плагин ACF Extended.
    Далее два скриншота для колонок, обратите внимание, должен быть включен префикс для названий.
    5fa3c1223cdc2920434016.png
    5fa3c1339e645818585464.png
    Тут могут возникнуть вопросы.
    Изначально Это код из рабочего проекта и там сделаны блоки, которые я собрал в гибком содержании Layouts, собственно, для того чтобы вывести все блоки мне достаточно сделать тип поля клон и выбрать туда все поля группы полей layouts. Но можно и по отдельности накидать в зависимости от ширины колонок. Главная идея это использования типа поля КЛОН.
    Вот как-то так
    Ответ написан
    1 комментарий
  • Есть ли плагин для создания записи в wordpress пользователю без регистрации?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    можно использовать плагин User Submitted Posts
    https://ru.wordpress.org/plugins/user-submitted-posts/
    Ответ написан
    Комментировать
  • Есть ли плагин для создания записи в wordpress пользователю без регистрации?

    AntonLitvinenko
    @AntonLitvinenko
    HTML coder
    Я для такой цели юзал acf_form
    Ответ написан
    Комментировать
  • Почему не работает shortcode в wp-backery?

    serii81
    @serii81 Автор вопроса
    Я люблю phр...
    Решение проблемы банальная.
    Заказчик перенес сайт на другой хостинг, и данные ftp поменялись.
    Нужно было просто проверить изменения в файлах локально и на сайте.
    Вдруг кому пригодится такое решение.
    Ответ написан
    Комментировать
  • Вместо контента выдает [wp_table id=965/]?

    OtshelnikFm
    @OtshelnikFm Куратор тега WordPress
    Обо мне расскажет yawncato.com
    Включи плагин что выводил этот шорткод
    Ответ написан
    Комментировать
  • Какие именно практические навыки необходимы для фриланса на php?

    Robur
    @Robur
    Знаю больше чем это необходимо
    Умение пользоваться поиском в первую очередь. У вас оно явно не прокачано, потренируйтесь на тостере.
    Ответ написан
    Комментировать
  • Как в advanced custom fields сделать возможность добавления блока?

    AntonLitvinenko
    @AntonLitvinenko
    HTML coder
    Если не ACF PRO то как вариант можно сделать кастомный тип записи отзывы и вывести его там где нужно с помощью wp_Query. В файле functions:
    Засунул под спойлер

    // Register Testimonials Post Type
    function testimonials_post_type() {
    
    	$labels = array(
    		'name'                  => _x( 'Testimonials', 'Post Type General Name', 'youth-worker' ),
    		'singular_name'         => _x( 'Testimonial', 'Post Type Singular Name', 'youth-worker' ),
    		'menu_name'             => __( 'Testimonials', 'youth-worker' ),
    		'name_admin_bar'        => __( 'Testimonials', 'youth-worker' ),
    		'archives'              => __( 'Testimonial Archives', 'youth-worker' ),
    		'attributes'            => __( 'Testimonial Attributes', 'youth-worker' ),
    		'parent_item_colon'     => __( 'Parent Item:', 'youth-worker' ),
    		'all_items'             => __( 'All Testimonials', 'youth-worker' ),
    		'add_new_item'          => __( 'Add New Testimonial', 'youth-worker' ),
    		'add_new'               => __( 'Add New', 'youth-worker' ),
    		'new_item'              => __( 'New Testimonial', 'youth-worker' ),
    		'edit_item'             => __( 'Edit Testimonial', 'youth-worker' ),
    		'update_item'           => __( 'Update Testimonial', 'youth-worker' ),
    		'view_item'             => __( 'View Testimonial', 'youth-worker' ),
    		'view_items'            => __( 'View Testimonials', 'youth-worker' ),
    		'search_items'          => __( 'Search Testimonial', 'youth-worker' ),
    		'not_found'             => __( 'Not found', 'youth-worker' ),
    		'not_found_in_trash'    => __( 'Not found in Trash', 'youth-worker' ),
    		'featured_image'        => __( 'Featured Image', 'youth-worker' ),
    		'set_featured_image'    => __( 'Set featured image', 'youth-worker' ),
    		'remove_featured_image' => __( 'Remove featured image', 'youth-worker' ),
    		'use_featured_image'    => __( 'Use as featured image', 'youth-worker' ),
    		'insert_into_item'      => __( 'Insert into item', 'youth-worker' ),
    		'uploaded_to_this_item' => __( 'Uploaded to this item', 'youth-worker' ),
    		'items_list'            => __( 'Testimonials list', 'youth-worker' ),
    		'items_list_navigation' => __( 'Testimonials list navigation', 'youth-worker' ),
    		'filter_items_list'     => __( 'Filter Testimonials list', 'youth-worker' ),
    	);
    	$args = array(
    		'label'                 => __( 'Testimonial', 'youth-worker' ),
    		'description'           => __( 'Post Type for testimonials', 'youth-worker' ),
    		'labels'                => $labels,
    		'supports'              => array( 'title', 'editor', 'thumbnail', 'custom-fields', 'page-attributes', 'post-formats' ),
    		'hierarchical'          => false,
    		'public'                => true,
    		'show_ui'               => true,
    		'show_in_menu'          => true,
    		'menu_position'         => 30,
    		'menu_icon'             => 'dashicons-format-status',
    		'show_in_admin_bar'     => true,
    		'show_in_nav_menus'     => true,
    		'can_export'            => true,
    		'has_archive'           => true,
    		'exclude_from_search'   => false,
    		'publicly_queryable'    => true,
    		'capability_type'       => 'post',
    	);
    	register_post_type( 'testimonials', $args );
    
    }
    add_action( 'init', 'testimonials_post_type', 0 );



    на странице, где надо вывести:

    $testimonials = new WP_Query(array(
    	'post_type'      => 'testimonials',
    	'orderby'        => 'date',
    	'order'          => 'DESC',
    ));
    
    <?php if ( $testimonials->have_posts() ) : ?>
    
    	<?php while ( $testimonials->have_posts() ) : $testimonials->the_post(); ?>
    
    		<div class="testimonial-item">
    			blabla
    		</div>
    
    		<?php endif; ?>
    
    	<?php endwhile;?>
    
    <?php endif; wp_reset_postdata(); ?>
    Ответ написан
    2 комментария
  • Как реализовать фильтр-слайдер по атрибутам?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    Есть несколько хороших плагинов:
    Рекомендую - Product Filter for WooCommerce by XforWooCommerce
    А вот еще вариант - WOOF - WooCommerce Products Filter
    Ответ написан
    2 комментария
  • Нужно ли закрывать индексацию файла sitemap в robots.txt?

    DevMan
    @DevMan
    sitemap делается именно для роботов, а не людей.
    закрывать его от индексации – это бинго идиотизма.
    Ответ написан
    Комментировать
  • Как исключить пост из категорий?

    deniscopro
    @deniscopro Куратор тега WordPress
    WordPress-разработчик, denisco.pro
    Попробуйте добавить в functions.php
    add_action( 'pre_get_posts', 'my_pre_get_posts' );
    function my_pre_get_posts( $query ) {
    	if( ! is_admin() && $query->is_main_query() ) {
    		if( $query->is_category() ){
    			$query->set( 'post__not_in', array( 1, 1095, 546, 38 ) );
    		}
    	}
    }
    Ответ написан
    3 комментария
  • Как бы вы сделали такую ЗАПИСЬ в Wordpress (картинка внутри)?

    zorca
    @zorca Куратор тега WordPress
    Я бы СВЕРСТАЛ и ЗАПРОГРАММИРОВАЛ
    Ответ написан
    1 комментарий
  • Модификация ответов в rest api woocommerce?

    heretic_man
    @heretic_man Автор вопроса
    в functions.php
    add_filter( 'woocommerce_rest_prepare_product_object', 'filter_function_name', 10, 3 );
    function filter_function_name( $response, $object, $request ){
        if( empty( $response->data ) )
            return $response;
    
        $inclde = [
            'id'        => $response->data['id'],
            'name'      => $response->data['name'],
            'images'    => $response->data['images'],
            'price'     => $response->data['price'],
            'meta_data' => $response->data['meta_data'],
            'categories'=> $response->data['categories']
        ];
    
        return $inclde;
    }


    WooCommerce имеет эти подготовительные фильтры для большинства своих ответов API. Обратите внимание, что их формат-woocommerce_rest_prepare_{$type}, где $type - это тип записи или имя таксономии (например, product_cat). В WooCommerce 2.7 некоторые из этих фильтров также имеют суффикс _object.

    Можно сделать адаптивными rest запросы, с помощью третьего параметра ($request) в функции и производить манипуляции с ответом ($response).

    Спасибо Alex за наводку!
    Ответ написан
    Комментировать
  • Какой плагин лучше использовать для размещения расписания на сайте WordPress?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    Здравствуйте!
    С учетом того, что вам нужна интерактивная таблица, то вот, решение:
    https://datatables.net/
    И как можно реализовать, чтобы при наведении на фамилию преподавателя появлялась краткая информация о нём?

    По клику на элементе ячейки отправляете REST запрос на сервер. Получаете краткую информацию в JSON и показываете в popup.

    Есть плагин TablePress, который использует функционал этой таблицы, но в любом случае вам необходимо будет добавить аякс запрос. Или как реализовано в примере тут создается доп. ячейка, которая скрывается и отображается по клику на иконку ("зеленый плюсик")
    Ответ написан
    1 комментарий
  • Какие плагины мультиязычности сайтов используете (WP)?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    Я всегда использую WPML. Он тяжеловат по сравнению с другими, но довольно хорошо работает с большинством сторонних плагинов. + у них отличная поддержка
    Ответ написан
    Комментировать
  • Как обезопасить сайт от фрилансеров?

    Sanes
    @Sanes
    Сами делайте. Вместо фрилансеров.
    Ответ написан
    Комментировать
  • В каком направлении развиваться? Wordpress или нет?

    OtshelnikFm
    @OtshelnikFm Куратор тега WordPress
    Обо мне расскажет yawncato.com
    Ничего не написано про английский язык.
    И как я понял pet project тоже нет?
    Есть опенсурсное что? Скиньте ссылку на гитхаб

    А в стороннем опенсурсе принимал участие? Тогда вот тебе - удаленная работа с профи. Подключайся к молодому плагину что сейчас идет в тренды - пиши им pr, issue - коммить, принимай участие в его жизни. Есть вероятность понять все прелести командной разработки. А может и в команду на официалку возьмут. Без переезда такое возможно. Знаю парней что работают так - и никуда не надо переезжать. Хотя и переехать можно. Главное показать себя, зацепиться за проект и стать его частью.

    Если вордпресс в кайф - то все пойдет.
    А развиваться надо в реакт разработке. Вордпресс его все больше внедряет. Так что тут без вариков.
    Вот написал что проект без доков, а спустя полгода тебя в этом проекте что изменилось в лучшую сторону? Доки появились?

    p.s. не берись за элементор. Иначе всю жизнь посвятишь тыканью кнопок и работе с говносайтами. Придется много подчищать за всеми. Это путь не туда.
    Ответ написан
    2 комментария