Ответы пользователя по тегу WordPress
  • Как правильно задавать пути к шрифтам для vite?

    serii81
    @serii81 Автор вопроса
    Я люблю phр...
    Нашел решение.
    В fonts.scss
    @font-face {
      font-family: Inter;
      font-display: swap;
      src: url("/wp-content/themes/bs-base-vite/assets/fonts/Inter-Bold.woff2") format("woff2"),
      url("/wp-content/themes/bs-base-vite/assets/fonts/Inter-Bold.woff") format("woff");
      font-weight: 700;
      font-style: normal;
    }
    Ответ написан
    Комментировать
  • Как в wordpress сделать выборку по дате из acf?

    serii81
    @serii81 Автор вопроса
    Я люблю phр...
    Нашел решение:
    $date_now = date('Y-m-d');
    
    $volantino = new WP_Query([
      'post_type' => 'cataloghi',
      'posts_per_page' => -1,
      'post_status' => array('publish'),
      'meta_query'     => array(
        array(
          'key'     => 'data_fine_pubblicazione',
          'value'   =>  $date_now,
          'type'      =>  'date',
          'compare' =>  '>='
    
        )
      ),
      'tax_query' => [
        [
          'taxonomy' => 'categoria_volantino',
          'field' => 'term_id',
          'terms' => $term_id,
        ],
      ],
    ]);
    Ответ написан
    Комментировать
  • Почему не приходит файл из формы на почту?

    serii81
    @serii81 Автор вопроса
    Я люблю phр...
    Решил проблему.
    Нужно прописать физический путь до файла а не url.

    $upload_overrides = array(
    			'test_form' => false
    		);
    
    		$file_project = wp_handle_upload($file, $upload_overrides);
    
    		$attachments = array(
    			$file_project['file'] // 3 файл
    		);
    Ответ написан
    Комментировать
  • Как добавить динамиически страницы в sitemap wp?

    serii81
    @serii81 Автор вопроса
    Я люблю phр...
    Нашел решение.

    add_action("init", "eg_create_sitemap");
    
    $sitemap_path = ABSPATH . "sitemap.xml";
    $pages_path = ABSPATH . "pages.xml";
    $ads_path = ABSPATH . "ads-list.xml";
    
    if (file_exists($sitemap_path)) {
    	unlink($sitemap_path);
    }
    if (file_exists($pages_path)) {
    	unlink($pages_path);
    }
    if (file_exists($ads_path)) {
    	unlink($ads_path);
    }
    
    function createUrlXml() {
    	$url_sitemap = '<?xml version="1.0" encoding="UTF-8"?>
    <?xml-stylesheet type="text/css" href="' . get_template_directory_uri() . '/helpers/sitemap.css"?>';
    	$url_sitemap .= "\n" . '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">' . "\n";
    	$url_sitemap .= "\t" . '<url>' . "\n" . "\t\t" . '<loc>https://www.imprendocasa.it/ads-list.xml</loc>' . "\n\t\t" . '<lastmod>2021-09-30T01:10:02.000000Z</lastmod>' . "\n\t\t" . '<changefreq>monthly</changefreq>' . "\n\t" . '
        </url>' . "\n";
    	$url_sitemap .= "\t" . '<url>' . "\n" . "\t\t" . '<loc>https://www.imprendocasa.it/pages.xml</loc>' . "\n\t\t" . '
            <lastmod>2021-09-30T01:10:02.000000Z</lastmod>' . "\n\t\t" . '<changefreq>monthly</changefreq>' . "\n\t" . '
        </url>' . "\n";
    	$url_sitemap .= '</urlset>';
    	return $url_sitemap;
    }
    
    function createPagesSitemap() {
    	$postsForSitemap = get_posts(array('numberposts' => -1, 'orderby' => 'modified', 'post_type' => array('post', 'page'), 'order' => 'DESC'));
    	$pages_sitemap = '<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet type="text/css" href="' . get_template_directory_uri() . '/helpers/sitemap.css"?>';
    	$pages_sitemap .= "\n" . '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">' . "\n";
    	foreach ($postsForSitemap as $post) {
    		setup_postdata($post);
    		$postdate = explode(" ", $post->post_modified);
    		$pages_sitemap .= "\t" . '<url>' . "\n" . "\t\t" . '<loc>' . get_permalink($post->ID) . '</loc>' . "\n\t\t" . '
            <lastmod>' . $postdate[0] . '</lastmod>' . "\n\t\t" . '<changefreq>monthly</changefreq>' . "\n\t" . '</url>' . "\n";
    	}
    	$pages_sitemap .= '</urlset>';
    	return $pages_sitemap;
    }
    
    function createAdsSitemap() {
    	$adsForSitemap = getPropertiesId();
    	$adsForSitemap = json_decode($adsForSitemap)->data;
    	$ads_sitemap = '<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet type="text/css" href="' . get_template_directory_uri() . '/helpers/sitemap.css"?>';
    	$ads_sitemap .= "\n" . '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">' . "\n";
    	foreach ($adsForSitemap as $item) {
    		$ads_sitemap .= "\t" . '<url>' . "\n" . "\t\t" . '<loc>https://www.imprendocasa.it/ads?id=' . $item->id . '</loc>' . "\n\t\t" . '<lastmod>' . $item->updated_at . '</lastmod>' . "\n\t\t" . '<changefreq>monthly</changefreq>' . "\n\t" . '</url>' . "\n";
    	}
    	$ads_sitemap .= '</urlset>';
    	return $ads_sitemap;
    }
    
    function eg_create_sitemap() {
    	$url_sitemap = createUrlXml();
    	$pages_sitemap = createPagesSitemap();
    	$ads_sitemap = createAdsSitemap();
    
    	global $sitemap_path;
    	global $pages_path;
    	global $ads_path;
    
    	$fp = fopen($sitemap_path, 'w');
    	fwrite($fp, $url_sitemap);
    	fclose($fp);
    
    	$fp = fopen($pages_path, 'w');
    	fwrite($fp, $pages_sitemap);
    	fclose($fp);
    
    	$fp = fopen($ads_path, 'w');
    	fwrite($fp, $ads_sitemap);
    	fclose($fp);
    }


    $adsForSitemap - получаю данные из api.
    Ответ написан
    Комментировать
  • Как октлючить wp-sitemap.xml в wordpress?

    serii81
    @serii81 Автор вопроса
    Я люблю phр...
    Вопрос решен.
    Банально, забыл подключить файлик sitemap.php в functions.php.

    Просто пришлось сделать карту для нескольких сайтов, и у некоторых работало.
    Еще, я использую для seo rankmath, и у плагина отключил sitemap.
    Ответ написан
    Комментировать
  • "The plugin generated 249 characters of unexpected output during activation"?

    serii81
    @serii81 Автор вопроса
    Я люблю phр...
    Решил проблему.

    Создал метод, чтобы проверить, если существует база данных.
    public function checkIfTableExist()
    	{
    		global $wpdb;
    		$table_name = $wpdb->prefix . "google_analitycs_table";
    		if ($wpdb->get_var("SHOW TABLES LIKE '$table_name'") === $table_name) {
    			return true;
    		}
    		return false;
    	}


    И потом проверил.

    if ($googleAnalyticsPlugin->checkIfTableExist()) {
    	$googleAnalyticsPlugin->register();
    }
    Ответ написан
    Комментировать
  • Почему не работает shortcode в wp-backery?

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

    serii81
    @serii81 Автор вопроса
    Я люблю phр...
    Сделал я для себя такой шаблон.
    Создал папку gulp, она находится на одном уровне со всеми проектами.
    Захожу в ней и запускаю команду gulp.
    И теперь, при изменении файлов php, scss, css, js, браузер с задержкой в 2000ms перезагружается.
    Задержка нужна, так как я работаю в шторме и нужно запулить изменения на сервер.
    Вот содержимое gulpfile.js
    'use strict';
    
    let gulp = require('gulp'),
    	//css
    	// stylus = require('gulp-stylus'),
    	sass = require('gulp-sass'),
    	autoprefixer = require("gulp-autoprefixer"),
    	sourcemaps = require('gulp-sourcemaps'),
    	wait = require('gulp-wait'),
    	notify = require("gulp-notify"),
    	plumber = require("gulp-plumber"),
    	browserSync = require('browser-sync').create(),
    	replace = require('gulp-replace');
    
    let siteUrl = 'http://wc-estore.host1670806.hostland.pro/';
    let siteDir = '../wc-estore/';
    
    gulp.task("scss", function () {
    	return gulp.src(siteDir + 'assets/scss/my.scss')
    		// .pipe(plumber())
    		.pipe(sourcemaps.init())
    		.pipe(wait(500))
    		.pipe(sass({
    			outputStyle: 'expanded'
    		}).on('error', notify.onError(function (error) {
    			return 'An error occurred while compiling sass.\nLook in the console for details.\n' + error;
    		})))
    		.pipe(autoprefixer({
    			cascade: false
    		}))
    		.pipe(sourcemaps.write('.'))
    		.pipe(gulp.dest(siteDir + 'assets/css/'))
    		.pipe(browserSync.reload({stream: true}))
    		.pipe(notify("Change css"));
    });
    
    gulp.task("watch", function () {
    	gulp.watch(siteDir + 'assets/scss/**/*.scss', gulp.series('scss'));
    });
    
    gulp.task('browser-sync', function () {
    	browserSync.init({
    		proxy: {
    			target: siteUrl,
    			ws: true
    		},
    		reloadDelay: 2000
    	});
    	gulp.watch(siteDir + "**/*.php").on('change', browserSync.reload);
    	gulp.watch(siteDir + "**/*.css").on('change', browserSync.reload);
    	gulp.watch(siteDir + "**/*.js").on('change', browserSync.reload);
    });
    
    gulp.task('default', gulp.parallel('watch', 'browser-sync'));
    Ответ написан
    Комментировать
  • Почему не срабатывает ajax запрос в wordpress?

    serii81
    @serii81 Автор вопроса
    Я люблю phр...
    Нашел решение.
    У меня json не сработал, использовал html.
    jQuery.ajax({
    			type: 'POST',
    			url: search_form.url,
    			data: data,
    			dataType: 'html',
    			success: function (data) {
    				$('.search_form .search-result').html(data);
    			}
    		});


    И потом отфильтровал в functions.php и вывел
    add_action( 'wp_ajax_myaction', 'esp_search_ajax_action_callback' );
    add_action( 'wp_ajax_nopriv_myaction', 'esp_search_ajax_action_callback' );
    function esp_search_ajax_action_callback() {
    	/**
    	 * Проверяем нонсе из массива пости и из wp_localize script
    	 */
    	if(!wp_verify_nonce($_POST['nonce'], 'search-nonce')){
    		wp_die('Данные пришли с левого адреса');
    	}
    	$_POST = filter_input_array( INPUT_POST, FILTER_SANITIZE_STRING );
    	$args = [
    		'post_type' => ['post', 'product'],
    		'post_status' => 'public',
    		's' => $_POST['s'],
    	];
    
    	$query_ajax = new WP_Query($args);
    	?>
    	<?php if($query_ajax->have_posts()): ?>
    		<?php while($query_ajax->have_posts()): ?>
    			<?php $query_ajax->the_post(); ?>
    			<h3 class="title-search"><?php the_title(); ?></h3>
    		<?php endwhile; ?>
    		<?php wp_reset_postdata(); ?>
    	<?php endif; ?>
    
    <?php
        wp_die();
    }
    Ответ написан
    Комментировать
  • Какое можно выбрать решение для мини магазина на wordpress?

    serii81
    @serii81
    Я люблю phр...
    Я где-то год назад работал над небольшим магазином, только разрабатывал не я.
    Там автор тоже использовал скрипты вместо woocommerce.
    Я могу вам скинуть ссылку на архив.
    Вы можете установить себе на хостинг и посмотреть.
    Если хотите, напишите я вам скину свой телеграм.
    Ответ написан
    Комментировать
  • Ошибка http wordpess при загрузке pdf файла, как решить?

    serii81
    @serii81 Автор вопроса
    Я люблю phр...
    Нашел я решение, это мой косяк.
    Я установил плагин для защиты all in one security, и там есть галочка 'не загружать файлы больше 10мб', вот ее я и поставил.

    Спасибо всем, кто постарался помочь.
    Ответ написан
    Комментировать
  • Как подключить facebook плагин на сайте wordpress?

    serii81
    @serii81 Автор вопроса
    Я люблю phр...
    Facebook чаты работают только с бизнес страницами.
    Ответ написан
    Комментировать
  • Есть ли в wordpress плагин веб чата, который работает одновременно с несколькими сайтами?

    serii81
    @serii81 Автор вопроса
    Я люблю phр...
    Установил jivosite, в настройках помог онлайн констультант, за что ему и спасибо.
    Ответ написан
    Комментировать
  • Почему не работает форма contact form 7 и magnific popup?

    serii81
    @serii81 Автор вопроса
    Я люблю phр...
    Мое решение плагин https://ru.wordpress.org/plugins/easy-modal/
    Ответ написан
    Комментировать
  • Сломалась тема на wordpress, как вернуть все назад?

    serii81
    @serii81 Автор вопроса
    Я люблю phр...
    Все, сделал.
    Оказывается в шапке пропали два закрывающейся тегов.
    Остается гадать почему они пропали?
    Главное, что работает.
    Этот урок на долго запомню.
    Ответ написан
  • Почему instance в виджете worpdress равен null?

    serii81
    @serii81 Автор вопроса
    Я люблю phр...
    Нашел ответ.
    В методе update мы должны прогонять все значения из new_instance и заодно проверять. Вот как тут:
    // Сохранение настроек виджета (очистка)
    	function update( $new_instance, $old_instance ) {
    
    		$instance = array();
    		$instance['title'] = ( !empty( $new_instance['title'] ) ) ? ( $new_instance['title'] ) : '';
    		$instance['count'] = ( !empty( $new_instance['count'] ) ) ? strip_tags( $new_instance['count'] ) : '5';
    
    		return $instance;
    	}
    Ответ написан
    Комментировать
  • Почему поле из настроек плагина carbon-fields возвращает пустую строку?

    serii81
    @serii81 Автор вопроса
    Я люблю phр...
    Все, нашел решение.
    Я использую последнюю версию плагина, но посмотрел на ютубе курс carbon-fields
    Там автор для версии 1.6 рекомендует использовать блок функций function_exist, чтобы сайт не ломался, когда плагин отключают.
    Только выходит, что этот способ не работает для последней версии.
    Ответ написан
  • Как сделать загрузку изображений WordPress?

    serii81
    @serii81
    Я люблю phр...
    Так же ведь в редакторе TinyMCE есть возможность вставить картинку из медиа библиотеки.
    В чем проблема?
    Ответ написан
  • Как в вордпрессе нужно менять css?

    serii81
    @serii81
    Я люблю phр...
    Вы можете вписать изменения в файле style.css в самом конце.
    Главное, посмотреть через ctrl+u как подключаются стили, чтобы файл style.css был ниже файла, где находятся стили для блока, который вас интересует.
    Я обычно так и делаю.
    Стили после установки верстки на wordpress правлю отдельно.
    Ответ написан
    Комментировать
  • Как исправить "Warning: count(): Parameter must be an array or an object that implements Countable in D:\OSPanel\domains\wp1.loc\wp-includes\post-te"?

    serii81
    @serii81 Автор вопроса
    Я люблю phр...
    Вопрос закрыт.
    Нужно было запустить цикл в single или в content из template-parts.
    Ответ написан
    Комментировать