Ответы пользователя по тегу WordPress
  • Как лучше осуществить рассылку писем через WordPress?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    Здравствуйте!

    Обычно для рассылки писем у вас должен быть список реципиентов. Соответственно, вам нужен какой-нибудь виджет для сбора подписок на рассылку. Есть готовые решения в виде плагина -
    Например, MailChimp - https://ru.wordpress.org/plugins/mailchimp-for-wp/
    Или другой плагин - https://ru.wordpress.org/plugins/email-subscribers/

    Можно, также использовать ACF для сбора майлов и отправки писем (понадобятся знания рнр, кодекса ВП, html, css, js).

    Можно написать свой плагин или mu плагин... смотря что нужно.
    Ответ написан
    Комментировать
  • Почему при загрузке страницы сайта грузятся изображения с другого домена?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    Здравствуйте!

    Сложно назвать конкретную причину, но возможны также следующие варианты:
    1) Вы скопировали новости (записи или просто картинку) с других сайтов и вставили на сайт. Соответственно, картинки ссылаются на внешний ресурс.
    2) Вы парсите новости и рассматривается аналогичная вышеупомянутая ситуация (может парсер неправильно работаеn)
    3) Вы импортируете на сайт новости из RSS ленты
    4) Вы устанавливали левые премиум плагины и вместе с ним кучу вредоносного кода. Обратите внимание, что иногда подобные записи, ссылки и другая информация отображается для неавторизованного пользователя или для НЕ админа. Т.е. если вы авторизовались, как админ, то вы не увидите этот код в исходнике, а если зайдете неавторизовавшись, то увидите ссылки. (Это я к тому, почему иногда новости грузятся, а иногда нет).
    Установите плагин Wordfence и просканируйте сайт. Иногда различный вредоносный код маскируется под системные файлы ВП... что-то типа wp-cd.php и т.д.
    Также попробуйте сделать следующее - если вы устанавливали левый премиум плагин, то изучите файлы этого плагина. Обычно, большинство вредоносного кода иницируется в основном файле, но бывают и случаи, когда этот код иницирован в других внутренних рнр файлах.

    Но я просмотрел ваши страницы и не вижу ничего такого

    P.S. Сайт https://rescan.pro/ жалуется на неизвестные вставки -
    Скрин https://screenshots.firefox.com/TeijEd5rFHV6nZT5/r...
    Ответ написан
    Комментировать
  • Как сделать превью youtube видео для галереи?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    Здравствуйте!

    Можно использовать ACF (Repeater например) + скрипт для создания карусели.
    Пример реализации с owl carousel (правда, по ссылке пример не совсем, как ваш, но наверное если покопаться в докуметации, то можно найти нужный вам стиль) - https://owlcarousel2.github.io/OwlCarousel2/demos/...
    или например, вот этот слайдер - flexslider.woothemes.com/video.html

    Вроде тут пытались реализовать нечто при помощи Flexslider с миниатюрами видео https://stackoverflow.com/questions/11710188/jquer...

    Кстати, если вам нужно получить миниатюры из ютуб и других агрегаторов, то можно использовать следующий код. Можно использовать с типом поля oembed ACF
    // Grab video thumbnail from oembed
    function get_video_thumbnail_uri( $video_uri ) {
    	$thumbnail_uri = '';
    	// determine the type of video and the video id
    	$video = parse_video_uri( $video_uri );
    	// get youtube thumbnail
    	if ( $video['type'] == 'youtube' )
    		$thumbnail_uri = 'https://img.youtube.com/vi/' . $video['id'] . '/mqdefault.jpg';
    	// get vimeo thumbnail
    	if( $video['type'] == 'vimeo' )
    		$thumbnail_uri = get_vimeo_thumbnail_uri( $video['id'] );
    	// get wistia thumbnail
    	if( $video['type'] == 'wistia' )
    		$thumbnail_uri = get_wistia_thumbnail_uri( $video_uri );
    	// get default/placeholder thumbnail
    	if( empty( $thumbnail_uri ) || is_wp_error( $thumbnail_uri ) )
    		$thumbnail_uri = ''; 
    	//return thumbnail uri
    	return $thumbnail_uri;
    }
    // Parse the video uri/url to determine the video type/source and the video id
    function parse_video_uri( $url ) {
    	// Parse the url 
    	$parse = parse_url( $url );	
    	// Set blank variables
    	$video_type = '';
    	$video_id = '';
    	// Url is http://youtu.be/xxxx
    	if ( $parse['host'] == 'youtu.be' ) {
    	$video_type = 'youtube';
    	$video_id = ltrim( $parse['path'],'/' );	
    }
    // Url is http://www.youtube.com/watch?v=xxxx 
    // or http://www.youtube.com/watch?feature=player_embedded&v=xxx
    // or http://www.youtube.com/embed/xxxx
    if ( ( $parse['host'] == 'youtube.com' ) || ( $parse['host'] == 'www.youtube.com' ) ) {
    	$video_type = 'youtube';
    	parse_str( $parse['query'] );
    	$video_id = $v;	
    		if ( !empty( $feature ) )
    			$video_id = end( explode( 'v=', $parse['query'] ) );
    		if ( strpos( $parse['path'], 'embed' ) == 1 )
    			$video_id = end( explode( '/', $parse['path'] ) );
    			
    }
    		
    // Url is http://www.vimeo.com
    if ( ( $parse['host'] == 'vimeo.com' ) || ( $parse['host'] == 'www.vimeo.com' ) ) {
    	$video_type = 'vimeo';
    	$video_id = ltrim( $parse['path'],'/' );	
    						
    }
    	$host_names = explode(".", $parse['host'] );
    	$rebuild = ( ! empty( $host_names[1] ) ? $host_names[1] : '') . '.' . ( ! empty($host_names[2] ) ? $host_names[2] : '');
    // Url is an oembed url wistia.com
    if ( ( $rebuild == 'wistia.com' ) || ( $rebuild == 'wi.st.com' ) ) {
    		$video_type = 'wistia';		
    	if ( strpos( $parse['path'], 'medias' ) == 1 )
    		$video_id = end( explode( '/', $parse['path'] ) );
    }		
    // If recognised type return video array
    if ( !empty( $video_type ) ) {
    	$video_array = array('type' => $video_type, 'id' => $video_id);
    	return $video_array;
    	} else {
    		return false;
    	}
    		
    }
    //Takes a Vimeo video/clip ID and calls the Vimeo API v2 to get the large thumbnail URL.
    function get_vimeo_thumbnail_uri( $clip_id ) {
    	$vimeo_api_uri = 'http://vimeo.com/api/v2/video/' . $clip_id . '.php';
    	$vimeo_response = wp_remote_get( $vimeo_api_uri );
    		if( is_wp_error( $vimeo_response ) ) {
    			return $vimeo_response;
    		} else {
    			$vimeo_response = unserialize( $vimeo_response['body'] );
    			return $vimeo_response[0]['thumbnail_large'];
    		}
    		
    }
    //Takes a wistia oembed url and gets the video thumbnail url.
    function get_wistia_thumbnail_uri( $video_uri ) {
    	if ( empty($video_uri) )
    		return false;
    		$wistia_api_uri = 'http://fast.wistia.com/oembed?url=' . $video_uri;
    		$wistia_response = wp_remote_get( $wistia_api_uri );
    		if( is_wp_error( $wistia_response ) ) {
    			return $wistia_response;
    		} else {
    			$wistia_response = json_decode( $wistia_response['body'], true );
    			return $wistia_response['thumbnail_url'];
    		}
    		
    }
    Ответ написан
    Комментировать
  • Как в mysql перенести таблицу из одной базы в другую?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    Здравствуйте!
    Прежде всего вам понадобится phpmyadmin. Зайдите в phpmyadmin, выделите экспортируемую таблицу, экспортируйте в файл. Откройте другую таблицу импортируйте экспортированную таблицу обратно....

    Ну или же можете сделать так: сменить префикс таблиц в wp-config. И вместо отдельной 2-й таблицы, экспортировать и импортировать все туда же, но уже с другим префиксом...

    А еще лучше разобраться в проблеме. Начните например,
    define('WP_ALLOW_REPAIR', true);
    Если вы видите проблему именно в БД.
    www.wpbeginner.com/wp-tutorials/how-to-fix-the-err...
    Ответ написан
    Комментировать
  • Бесплатный плагин для объединения css, js на wordpress?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    А я кстати, использую сочетание плагинов fastest cache & fastest cache premium & autoptimize. Все кроме CSS кеширую через fastest cache. Только для объединения и оптимизации CSS использую autopmize. Там же настраиваю критичный CSS - https://jonassebastianohlsson.com/criticalpathcssg...

    А autoptimize я исоплзую, так как fastest cache не умеет создавать критичный css и гугл жалуется - источник: www.wpfastestcache.com/premium/optimize-css-delivery
    Ответ написан
    Комментировать
  • Как в Wordpress Woocommerce настроить title?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    Добрый день!
    Управлять заголовком Yoast SEO можно через настройки плагина и / или в панеле редактирования страницы, товара, записи и т.д.
    Зайдите SEO - Заголовки и метаданные - Таксономии
    https://screenshots.firefox.com/xH984k3hUlqEW5ys/b...
    Так же во вкладке Записи -
    https://screenshots.firefox.com/asslTvWsw0GU1M3L/b...

    В случае, если вы захотите отредактирвать "хлебные крошки" созданные при помощи Yoast SEO для вукомерца, то ссылка на ресурс - https://stackoverflow.com/questions/40251159/overr...
    Ответ написан
    Комментировать
  • Почему сайт на wordpress не реагирует на изменения в functions.php?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    Добрый день!
    Если хотите разом все убрать, то плагин Clearfy поможет вам - https://ru.wordpress.org/plugins/clearfy/

    Проверьте коррекность подключения и расположения wp_head в коде. Он должен быть перед закрываюшим тегом

    Полезная ссылка - https://www.isitwp.com/remove-code-wordpress-header/
    Ответ написан
    Комментировать
  • Как при добавлении товара на сайт, отправлять письмо на указанный email (WP + WooCommerce)?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    Здравствуйте!
    Готовый плагин - https://wordpress.org/plugins/bnfw/
    Но если не ошибаюсь, только премиум версия этого плагина поддерживает отправку писем для кастомных типов записей, в том числе и для WC
    Ответ написан
    Комментировать
  • Как парсить вопросы из docx и выложить их?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    Здравствуйте!
    Вряд ли есть готовое решение под конкретный плагин. Вы можете попробовать поискать дополнения для импорта данных для плагина HD Quiz при помощи WP All Import. Может быть и найдете что-нибудь. Но в любом случае, импорт скорее всего будет из csv || xls || xlsx. Ищите что-то подобное.
    Ну или же, как вам уже посоветовали, найдите фрилансера, который напишет вам парсер под конкретную задачу
    Ответ написан
    Комментировать
  • Форумы на базе wordpress?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    Здравствуйте!

    Столь гибких решений по вашему вопросу я не встречал, но могу посоветовать следующее:

    1 вариант - WPMS + BBPRESS. Технически вы устанавливаете мультисайт, создаете нужные каталоги -
    /forum1
    /forum2 и т.д.
    В каждый из них (который технически является полноценным сайтом) устанавливаете и настраиваете форум bbpress.

    2 вариант - найдите другой CMS для форума. CMS для форумов много... Например, NodeBB на ноде, PhpBB на рнр и т.д. После чего просто, привязываете форум с ВП при помощи плагинов "мостов".
    для nodebb - https://github.com/julianlam/nodebb-plugin-sso-wor...
    для рнрbb - https://wordpress.org/plugins/wp-phpbb-bridge/
    https://ru.wordpress.org/plugins/bridgedd/
    и т.д.

    Но как мне кажется, первый вариант более предпочтителен...
    Ответ написан
    Комментировать
  • Плагин видео для вордпресс с аякс фильтром?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    Здравствуйте!
    На самом деле это можно реализовать и без плагина. Но и плагин также имеется. Готовый плагин (возможно, вам придется чуть покопаться в документации плагина, так как там подробно написано, как исопльзовать аякс и т.д.)
    Плагин - Essential Grid
    https://codecanyon.net/item/essential-grid-wordpre...

    Если вы планируете реализовать это "без готового плагина", то можно сделать следующим образом:
    - создайте кастомный тип записи для добавления видео.
    Пример -
    //Видео
    add_action('init', 'register_post_types');
    function register_post_types(){
    register_post_type('video', array(
    		'label'  => 'Видео',
    		'labels' => array(
    			'name'               => 'Видео',
    			'singular_name'      => 'Видео',
    			'add_new'            => 'Добавить новое',
    			'add_new_item'       => 'Введите заголовок',
    			'edit_item'          => 'Редактирование видео',
    			'new_item'           => 'Новое видео',
    			'view_item'          => 'Посмотреть видео',
    			'search_items'       => 'Искать видео',
    			'not_found'          => 'Видео не найдено',
    			'not_found_in_trash' => 'В корзине видео не найдено',
    			'parent_item_colon'  => '',
    			'menu_name'          => 'Видео',
    		),
    		'description'         => 'Видео для сайта',
    		'public'              => true,
    		'publicly_queryable'  => true,
    		'exclude_from_search' => false,
    		'show_ui'             => true,
    		'show_in_menu'        => true,
    		'show_in_admin_bar'   => true,
    		'menu_position'       => 24,
    		'menu_icon'           => 'dashicons-format-video', 
    		'capability_type'   => 'post',
    		'map_meta_cap'      => true,
    		'hierarchical'        => false,
    		'supports'            => array('title','editor','author','thumbnail'),
    		'taxonomies'          => array('videocat'),
    		'has_archive'         => true,
    		'rewrite'             => array('slug' => 'videos', 'with_front' => false),
    		'query_var'           => true,
    	) );
    }

    - установите ACF, исопльзуйте тип поля oembed для добавления видео.
    https://www.advancedcustomfields.com/resources/oembed/

    Код для парсинга картинки видео из агрегаторов.
    // Grab video thumbnail from oembed
    function get_video_thumbnail_uri( $video_uri ) {
    	$thumbnail_uri = '';
    	// determine the type of video and the video id
    	$video = parse_video_uri( $video_uri );
    	// get youtube thumbnail
    	if ( $video['type'] == 'youtube' )
    		$thumbnail_uri = 'https://img.youtube.com/vi/' . $video['id'] . '/mqdefault.jpg';
    	// get vimeo thumbnail
    	if( $video['type'] == 'vimeo' )
    		$thumbnail_uri = get_vimeo_thumbnail_uri( $video['id'] );
    	// get wistia thumbnail
    	if( $video['type'] == 'wistia' )
    		$thumbnail_uri = get_wistia_thumbnail_uri( $video_uri );
    	// get default/placeholder thumbnail
    	if( empty( $thumbnail_uri ) || is_wp_error( $thumbnail_uri ) )
    		$thumbnail_uri = ''; 
    	//return thumbnail uri
    	return $thumbnail_uri;
    }
    // Parse the video uri/url to determine the video type/source and the video id
    function parse_video_uri( $url ) {
    	// Parse the url 
    	$parse = parse_url( $url );	
    	// Set blank variables
    	$video_type = '';
    	$video_id = '';
    	// Url is http://youtu.be/xxxx
    	if ( $parse['host'] == 'youtu.be' ) {
    	$video_type = 'youtube';
    	$video_id = ltrim( $parse['path'],'/' );	
    }
    // Url is http://www.youtube.com/watch?v=xxxx 
    // or http://www.youtube.com/watch?feature=player_embedded&v=xxx
    // or http://www.youtube.com/embed/xxxx
    if ( ( $parse['host'] == 'youtube.com' ) || ( $parse['host'] == 'www.youtube.com' ) ) {
    	$video_type = 'youtube';
    	parse_str( $parse['query'] );
    	$video_id = $v;	
    		if ( !empty( $feature ) )
    			$video_id = end( explode( 'v=', $parse['query'] ) );
    		if ( strpos( $parse['path'], 'embed' ) == 1 )
    			$video_id = end( explode( '/', $parse['path'] ) );
    			
    }
    		
    // Url is http://www.vimeo.com
    if ( ( $parse['host'] == 'vimeo.com' ) || ( $parse['host'] == 'www.vimeo.com' ) ) {
    	$video_type = 'vimeo';
    	$video_id = ltrim( $parse['path'],'/' );	
    						
    }
    	$host_names = explode(".", $parse['host'] );
    	$rebuild = ( ! empty( $host_names[1] ) ? $host_names[1] : '') . '.' . ( ! empty($host_names[2] ) ? $host_names[2] : '');
    // Url is an oembed url wistia.com
    if ( ( $rebuild == 'wistia.com' ) || ( $rebuild == 'wi.st.com' ) ) {
    		$video_type = 'wistia';		
    	if ( strpos( $parse['path'], 'medias' ) == 1 )
    		$video_id = end( explode( '/', $parse['path'] ) );
    }		
    // If recognised type return video array
    if ( !empty( $video_type ) ) {
    	$video_array = array('type' => $video_type, 'id' => $video_id);
    	return $video_array;
    	} else {
    		return false;
    	}
    		
    }
    //Takes a Vimeo video/clip ID and calls the Vimeo API v2 to get the large thumbnail URL.
    function get_vimeo_thumbnail_uri( $clip_id ) {
    	$vimeo_api_uri = 'http://vimeo.com/api/v2/video/' . $clip_id . '.php';
    	$vimeo_response = wp_remote_get( $vimeo_api_uri );
    		if( is_wp_error( $vimeo_response ) ) {
    			return $vimeo_response;
    		} else {
    			$vimeo_response = unserialize( $vimeo_response['body'] );
    			return $vimeo_response[0]['thumbnail_large'];
    		}
    		
    }
    //Takes a wistia oembed url and gets the video thumbnail url.
    function get_wistia_thumbnail_uri( $video_uri ) {
    	if ( empty($video_uri) )
    		return false;
    		$wistia_api_uri = 'http://fast.wistia.com/oembed?url=' . $video_uri;
    		$wistia_response = wp_remote_get( $wistia_api_uri );
    		if( is_wp_error( $wistia_response ) ) {
    			return $wistia_response;
    		} else {
    			$wistia_response = json_decode( $wistia_response['body'], true );
    			return $wistia_response['thumbnail_url'];
    		}
    		
    }

    - Подключите необходимые скрипты. Например, magnific popup для открытия видео при клике в попапе.
    dimsemenov.com/plugins/magnific-popup

    Пример реализации видео с катомным типом записи, с кастомным полем и парсером миниатюры -
    https://md7.info/video

    Останется только добавить необходимый код для ajax подгрузки / сортировки видео.
    Ответ написан
    Комментировать
  • Почему не работает функция выхода?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    Здравствуйте!
    Скорее всего в коде синт ошибка из-за чего просто выводится ссылка the_permalink.

    Попробуйте этот код для выхода и дальнейшего редиректа на Главную
    <a href="<?php echo wp_logout_url(); ?>" title="Выход">Выход</a>


    Или вот этот для выхода и дальнейшего редиректа на текущую страницу
    <a href="<?php echo wp_logout_url( get_permalink() ); ?>">Выход</a>


    https://wp-kama.ru/function/wp_logout_url

    Также полезный ресурс - https://wordpress.stackexchange.com/questions/7793...
    Ответ написан
    Комментировать
  • Какой плагин для Wordpress написать?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    На самом деле есть довольно много тематик, в которых вы могли бы себя попробовать. Приведу лишь, небольшой список... вдруг окажется полезным для вас.
    - Плагин для работы с яндекс картами. Имеется примерно 3-4 плагина, но они не могут конкурировать с имеющимися плагинами Google Maps (имхо)
    - Плагин или виз. редактор для интеграции с ACF. Встречал лишь 1 скрипт на гитхабе, который так и не увидел свет.
    - Плагин мультиконфигурации товаров вукомерц. Имеется примерно 3-4 плагина, но скажу честно, в них нет такой гибкости, которая бывают довольно часто нужна.
    - Также можете напистаь плагины-мосты для интеграции с другими CMS
    - Также очень не хватает плагинов для импорта веб-сайтов из других CMS или из html. Есть плагин (платный сервис) CMS2CMS, который стоит кстати, дорого. Есть плагин Html Import 2 - устарел, но тем не менее работает. Можно даже его улучшить.
    - Нет плагинов для определения реферальной ссылки на ВП, а нужда иногда бывает. (точнее имеется 2-3 плагина, которые уже не обноелялись более 3-х лет и не работают).
    - Плагин для создания соц. сетей на ВП. Парочка вариантов имеется, но каждый из них имеет свои недостатки.
    - Вот, что действительно нужно - файловый архив на основе яндекс диска. Подобный плагин есть на Google Drive & Dropbox. Пример, на гугл драйв - https://md7.info/books
    - Относительно новое направление для ВП - PWA. Вдруг, будет интересно. Парочка плагинов имеется, но также не хватает гибкости.
    - Плагин для автоматической генерации критичного CSS для каждой страницы сайта. (Есть всего один плагин, который к тому же платный).
    - Плагин для чтения звуковых дорожек (табулатур) для создания сайтов наподобие Songsterr || Ultimate Guitar.
    Ответ написан
    Комментировать
  • Как сделать картинки слайдера wordpress заменяемыми?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    Здравствуйте!
    Для этих целей идеально подойдет ACF. А еще лучше ACF Pro (используйте ACF Repeater || ACF Gallery).
    Ответ написан
    1 комментарий
  • Кросспостинг в Wordpress + Telegram + VK + LiveJournal в разные виды поста?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    Здравствуйте!
    не пробовали SNAP? Social Networks Autoposter.
    В Pro версии есть куча разных социалок. И работает очень даже неплохо.

    Плагин - https://ru.wordpress.org/plugins/social-networks-a...
    Pro - https://www.nextscripts.com/social-networks-auto-p...
    Ответ написан
    6 комментариев
  • WordPress ACF как сделать обновление значений произвольных полей из файла Exel?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    Здравствуйте!
    WP ALL IMPORT + The Advanced Custom Fields Add-On For WP All Import
    www.wpallimport.com
    www.wpallimport.com/advanced-custom-fields

    Только вместо импорта выбираете, обновить.
    Ответ написан
    1 комментарий
  • Как убрать категорию по умолчанию Woocommerce?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    Здравствуйте!

    Ответ на ваш первый вопрос - https://calebburks.com/hide-uncategorized-default-...
    можно скачать плагин, который "скроет" дефолтную категорию.

    Ответ на ваш второй вопрос - вам нужны плагины типа Pre Order.
    https://wordpress.org/plugins/yith-pre-order-for-w...
    https://woocommerce.com/products/woocommerce-pre-o...
    Ответ написан
    Комментировать
  • Что не так с Wordpress пагинацией?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    А я использую вот эту пагинацию - dimox.name/wordpress-pagination-without-a-plugin

    Пример реализации - https://md7.info/fakty
    Ответ написан
    Комментировать
  • Какую тему wordpress выбрать с целью реализации подобного?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    Берите чистый бутстрап, а на нем создайте тему под себя) Всегда лучше будет... Тем более, дизайн темы несложный)
    Ответ написан
  • WordPress Visual Composer проблемы с переводом?

    azerphoenix
    @azerphoenix
    Java Software Engineer
    Здравствуйте!

    Как я понял, вы хотите перевести виз. редактор на украинский? Пробовали открыть pot po mo файлы через PoEdit или через Loco translate?

    А для qtranslate-x есть дополнение для виз. редактора, которое "включает" режим мультиязычности. А вообще лучше используйте плагин WPML вместо qtranslate-x. Меньше геморроя будет))
    Ответ написан