• Как в TablePress вывести поле из Advanced Custom Fields?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    Так работать не будет, при создании записей, в контенте не исполняется php-код. Вы можете почитать эту статью, чтобы понять общий принцип

    Я сомневаюсь, что кто-то, кроме самого разработчика сможет сходу сказать какие хуки в плагине TablePress отвечают за рендеринг контента, поэтому вам придется вооружиться документацией и перекопать код в их поиске

    Учитывайте, что вы создаете очень большую дыру в безопасности сайта

    И на последок, мой вам совет: напишите свой шорткод с кастомным запросом wp_query(), это будет работать быстрее и правильнее
    Ответ написан
    Комментировать
  • Как записать массив в Excel?

    artzolin
    @artzolin
    php, WordPress разработка сайтов artzolin.ru
    $array = [ '123-345', '999-257', '399-455', '846-313', '555-000', '766-765', '564-564' ];
    
    // создаем excel объект
    $objPHPExcel = new PHPExcel();
    
    // устанавливаем свойства excel документа
    $objPHPExcel->getProperties()->setCreator("Levandovskaya Marina")
    	->setLastModifiedBy("Levandovskaya Marina")
    	->setTitle("Doc Title")
    	->setSubject("Doc Subject")
    	->setDescription("Doc Description")
    	->setKeywords("Doc Keywords")
    	->setCategory("Doc Category");
    $objPHPExcel->setActiveSheetIndex(0);
    
    // добавляем данные из массива в документ
    foreach ( $array as $key => $value ) {
    	$objPHPExcel->setActiveSheetIndex(0)->setCellValue( 'A' . $key, $value );
    }
    
    // сохраняем файл
    $objWriter = PHPExcel_IOFactory::createWriter( $objPHPExcel, 'Excel2007' );
    $objWriter->save( str_replace( '.php', '.xlsx', __FILE__ ) );


    Если нужно будет писать в строку A1, B1, C1 и т.д. используйте массив буквенных ключей

    $letters = array();
    for ( $x = 'A'; $x <= 'ZZ'; $x++ ) {
    	$letters[] =  $x;
    }
    Ответ написан
    1 комментарий
  • Как в wordpress создать динамический вывод статей в соответствующие категории?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    Вам нужно было показать код get_template_part() и визуально эта функция должна быть в блоке .main-content

    <div class="container">
    	<div class="main-content">
    		<?php get_template_part( 'loop', 'category' ); ?>
    	</div>
    </div>


    Лично мне импонирует организация файлов темы twentysixteen

    get_header(); ?>
    
    	<div id="primary" class="content-area">
    		<main id="main" class="site-main" role="main">
    
    		<?php if ( have_posts() ) : ?>
    
    			<header class="page-header">
    				<?php the_archive_title( '<h1 class="page-title">', '</h1>' ); ?>
    				<?php the_archive_description( '<div class="taxonomy-description">', '</div>' ); ?>
    			</header>
    
    			<?php 
    			while ( have_posts() ) :
    				the_post();
    
    				get_template_part( 'template-parts/content', get_post_format() );
    
    			endwhile;
    
    			// Previous/next page navigation.
    			the_posts_pagination(
    				array(
    					'prev_text'          => __( 'Previous page', 'twentysixteen' ),
    					'next_text'          => __( 'Next page', 'twentysixteen' ),
    					'before_page_number' => '<span class="meta-nav screen-reader-text">' . __( 'Page', 'twentysixteen' ) . ' </span>',
    				)
    			);
    
    		else :
    			get_template_part( 'template-parts/content', 'none' );
    		endif; ?>
    
    		</main>
    	</div>
    
    <?php get_sidebar(); ?>
    <?php get_footer(); ?>


    Смотреть, как работают популярные темы — это хорошая практика, возьмите на будущее
    Ответ написан
    Комментировать
  • Поиск и удаление определенных HTML тегов с помощью php?

    artzolin
    @artzolin
    php, WordPress разработка сайтов artzolin.ru
    С помощью Simple HTML Dom и делайте

    $content = '<img itemprop="url image" loading="lazy" class="vc_single_image-img attachment-large" src="data:image/svg+xml,%3Csvg%20xmlns=\'http://www.w3.org/2000/svg\'%20viewBox=\'0%200%20690%20808\'%3E%3C/svg%3E" width="690" height="808" data-lazy-sizes="(max-width: 690px) 100vw, 690px" data-lazy-src="/images/wp-content/uploads/2021/03/deklaracija-list-1.jpg">
    <img itemprop="url image" loading="lazy" class="vc_single_image-img attachment-large" src="/images/wp-content/uploads/2021/03/deklaracija-list-1.jpg" width="690" height="808" data-lazy-sizes="(max-width: 690px) 100vw, 690px">';
    
    $html = str_get_html( $content );
    $images = $html->find( 'img' );
    
    foreach ( $images as $key => $image ) {
    	if ( stripos( $image->src, 'data:' ) !== false ) {
    		$image->outertext = '';
    	}
    }
    
    var_dump( $html->innertext );
    Ответ написан
    1 комментарий
  • Помощь с ajax wordpress?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    Был уже такой вопрос, да и в гугле по запросу "ajax register wordpress" решений тьма
    Ответ написан
  • Не обновляется дата страницы wordpress в google. что делать?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    Нужно в Google Search Console закинуть карту вашего сайта (sitemap), поисковик ее проверяет и если дата обновления страницы изменилась, он ее переобходит

    Тут же вы можете принудительно отправить страницу на переиндексацию

    612f204b520c7036601893.png
    Ответ написан
    Комментировать
  • Как создать тему/шаблон wp под elementor?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    стала интересная задача создать тему Wordpress для themeforest.

    Не очень-то интересная)

    как вообще создаются темы блогов с несколькими вариантами стилями для импорта

    С помощью кода — php, html, css, js

    Практический совет — посмотрите как сделаны стандартные темы twenty и популярные темы из репозитория и делайте так же, но скажу сразу, что покликав мышкой в админке вы не сможете сделать тему, которая пройдет верификацию themeforest
    Ответ написан
    5 комментариев
  • Можно ли сделать через ACF добавление множество полей?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    Это доступно только в PRO версии. В качестве альтернативы можете попробовать использовать Carbon Fields, он бесплатный, но поля придется создавать кодом
    Ответ написан
  • Есть ли примеры дизайна расписания на черном, темном фоне?

    artzolin
    @artzolin
    php, WordPress разработка сайтов artzolin.ru
    Ответ написан
    Комментировать
  • Возможно ли перенести плагины с сохранением настроек?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    Только если у плагина есть функционал импорта/экспорта настроек

    Вы можете клонировать весь сайт, например, с помощью плагина Duplicator
    Ответ написан
  • Как добавить условие в поиск?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    Вы можете проверять post_type в цикле перед подключением шаблона так:

    if ( get_post_type() === 'news' ) {
    	get_template_part( 'template-parts/news-item', get_post_format() );
    } else {
    	get_template_part( 'template-parts/blog-item', get_post_format() );
    }


    Еще хороший пример из практики: проверяется наличие шаблона archive-{post-type}.php в папке templates/archive/, если его нет, подключается базовый archive-simple.php

    $post_type = get_post_type();
    
    if ( file_exists( get_theme_file_path( 'templates/archive/archive-' . $post_type . '.php' ) ) ) {
    	get_template_part( 'templates/archive/archive-' . $post_type );
    } else {
    	get_template_part( 'templates/archive/archive-simple' );
    }
    Ответ написан
    Комментировать
  • Название не знаю, но он размещает везде .htacces, как удалить вирус?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    1. Удалить все нелицензионные плагины и темы
    2. Удалить все сомнительные плагины
    3. Ядро перезалить
    4. Базу почистить
    5. Самописную тему перебрать руками
    Ответ написан
    1 комментарий
  • Wordpress закрыть рубрику от индексации на главной?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    Вы точно понимаете значение "закрыть от индексации"? Закрыть конкретные страницы от индексации можно двумя способами:

    1. Вначале html-документа в прописать мета тег robots со значением noindex
    2. В файле robots.txt прописать правила для поисковых роботов


    Оба варианта запретят поисковым роботам индексировать страницы. И это все равно является рекомендацией, если поисковик сочтет контент полезным, он может проигнорировать указанные правила

    Есть еще тег <noindex>...</noindex>, гугл его игнорирует

    Вы можете запретить роботу переходить по ссылкам указав rel="nofollow", но он все равно найдет эти страницы и проиндексирует, если индексация не запрещена
    Ответ написан
    Комментировать
  • Как сверстать блок с фоновым изображением?

    artzolin
    @artzolin
    php, WordPress разработка сайтов artzolin.ru
    Возьмите бутстрап сетку или любую другую, облегчит вам жизнь на начальном этапе

    <div class="section">
    	<div class="container">
    		<div class="row">
    			<div class="col-12 col-lg-7">
    				<!-- тут текст -->
    			</div>
    		</div>
    	</div>
    </div>


    .section {
    	position: relative;
    	padding: 2rem 0; 
    	min-height: 320px;
    	background: #111;
    }
    .section::before {
    	content: '';
    	position: absolute;
    	width: 50%;
    	height: 80%;
    	background: url( '../images/bg.png' ) center / cover no-repeat;
    	right: 0;
    	top: 50%;
    	transform: translateY(-50%);
    }


    Над адаптивностью на мобильных устройствах думайте сами
    Ответ написан
    Комментировать
  • Как лучше оптимизировать сайт с большим количеством картинок?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    Хостер блокирует вас не за превышение лимита по просмотрам изображений, а за превышение лимита нагрузки на серверные ресурсы при генерации страниц сайта. Вероятно у вас тяжелые запросы в базу или низкий тариф на хосте

    Лично я сомневаюсь, что вынос изображений на отдельный ресурс даст хоть какой-то результат. Изображения нужно сжать, на странице выводить только подходящего размера (medium, large), удалить неиспользуемые размеры remove_image_size() и нарезать их заново Regenerate Thumbnails

    Это уменьшит размер файлов и даст прирост к скорости загрузки сайта у пользователя, но никак не повлияет на затраченные ресурсы сервера
    Ответ написан
    Комментировать
  • Как вставить исходный код с необходимой подсветкой на сайт?

    artzolin
    @artzolin
    php, WordPress разработка сайтов artzolin.ru
    Единственное нормальное решение, которое я нашел highlight.js
    Ответ написан
    Комментировать
  • Как сделать фильтрацию таксономий?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    Зачем вы это делаете? Скопируйте шаблон archive.php из темы twentysixteen и не мучайтесь

    <main id="main" class="site-main" role="main">
    
    	<?php if ( have_posts() ) : ?>
    
    		<header class="page-header">
    			<?php
    				the_archive_title( '<h1 class="page-title">', '</h1>' );
    				the_archive_description( '<div class="taxonomy-description">', '</div>' );
    			?>
    		</header><!-- .page-header -->
    
    		<?php
    		// Start the loop.
    		while ( have_posts() ) :
    			the_post();
    
    			/*
    			 * Include the Post-Format-specific template for the content.
    			 * If you want to override this in a child theme, then include a file
    			 * called content-___.php (where ___ is the Post Format name) and that
    			 * will be used instead.
    			 */
    			get_template_part( 'template-parts/content', get_post_format() );
    
    			// End the loop.
    		endwhile;
    
    		// Previous/next page navigation.
    		the_posts_pagination(
    			array(
    				'prev_text'          => __( 'Previous page', 'twentysixteen' ),
    				'next_text'          => __( 'Next page', 'twentysixteen' ),
    				'before_page_number' => '<span class="meta-nav screen-reader-text">' . __( 'Page', 'twentysixteen' ) . ' </span>',
    			)
    		);
    
    		// If no content, include the "No posts found" template.
    	else :
    		get_template_part( 'template-parts/content', 'none' );
    
    	endif;
    	?>
    
    </main><!-- .site-main -->
    Ответ написан
  • Как сделать 301 редирект с Url с get параметрами на url без параметров, но содержащего значения из них?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    Вы можете получить параметры GET-запроса так:

    if ( isset( $_GET['id'] ) ) {
    	$id = $_GET['id'];
    }


    Безопаснее использовать для этого функцию get_query_var()

    if ( get_query_var( 'id' ) ) {
    	$id = get_query_var( 'id' );
    }


    Чтобы этот код сработал вам нужно зарегистрировать доступные параметры

    add_filter( 'query_vars', 'add_my_var' );
    function add_my_var( $public_query_vars ) {
    	$public_query_vars[] = 'id';
    	return $public_query_vars;
    }


    Все редиректы должны выполняться на хуке template_redirect с помощью функции wp_redirect() или wp_safe_redirect(). Разбираете ссылку, проверяете необходимые условия редиректа и собираете новую ссылку. Вот шаблон:

    add_action( 'template_redirect', 'custom_template_redirect' );
    function custom_template_redirect() {
    
    	if ( $condition ) {
    		wp_redirect( home_url( '/' ) );
    		exit();
    	}
    
    }
    Ответ написан
    Комментировать
  • Как сделать кастомную страницу авторизации в WP?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    Вопрос "что делать?" — это вопрос философский. По сути в вас есть два варианта:

    1. Вы можете вооружиться банкой кофе и документацией, переписать форму регистрации и авторизации, разобрать функции, найти фильтры как заменить ссылку и все, что вам встретится по пути и надеяться, что вы не наделали дыр в системе авторизации
    2. Не заниматься ерундой и оставить ссылку авторизации в покое, пока у вас нет несколько миллионов активной аудитории, ваш сайт не представляет никакого интереса для взломщиков. Поставьте сложный пароль. Поставьте защиту от брутфорса fail2ban и спите спокойно


    Тут функции, которые вам понадобиться для первого варианта. Можете начать с функции wp_login_form(), она выводит HTML-форму авторизации
    Ответ написан
    Комментировать
  • Как получить список всех менеджеров Wordpress?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов artzolin.ru
    $args = array(
    	'role'   => 'administrator',
    );
    
    if ( $users = get_users( $args ) ) {
    	echo '<ul>';
    	foreach ( $users as $key => $user ) {
    		echo '<li><a href="' . get_author_posts_url( $user->ID ) . '">' . $user->display_name . '</a></li>';
    	}
    	echo '</ul>';
    }
    Ответ написан
    2 комментария