• Как сделать в помощью 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. Но можно и по отдельности накидать в зависимости от ширины колонок. Главная идея это использования типа поля КЛОН.
    Вот как-то так
    Ответ написан
    Комментировать
  • Есть ли плагин для создания записи в 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
    Включи плагин что выводил этот шорткод
    Ответ написан
    Комментировать
  • Стоит ли идти на фриланс без опыта?

    LoliDeveloper
    @LoliDeveloper
    Линейная алгебра как смысл жизни
    А где ты опыт возьмёшь?
    Я считаю, что попробовать точно стоит. Если думаешь что сможешь, то шансы вполне есть. Главное не забудь как юзать гугл.
    Ответ написан
    2 комментария
  • Какие именно практические навыки необходимы для фриланса на 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 комментария
  • Такие собеседования в порядке вещей?

    Zoominger
    @Zoominger
    System Integrator
    Какая сфера? Веб? Тогда нормально.
    Таких, как вы, они, видимо, десятками гоняют. 9 из 10 повозмущаются, а один быстро всё схватит, объяснит и пойдёт махать клавиатурой за копейки.
    Так это и делается.
    Ответ написан
    1 комментарий
  • Как подключить файл стилей для отдельной страницы?

    в functions.php

    если подключаете на странице - is_page, если это статья, запись - is_single

    add_action( 'wp_enqueue_scripts', 'custom_scripts' );
    function custom_scripts(){
    		if( is_page( $id ) ) { // тут ID, slug или заголовок страницы
    				wp_enqueue_style( 'custom', get_template_directory_uri() . '/css/mysite.css');
    		}
    }
    Ответ написан
    4 комментария