• Как правильно задать title для каждого изображения в магазине, чтобы он был точно такой же, как alt?

    artzolin
    @artzolin Куратор тега WordPress
    php, WordPress разработка сайтов zolin.digital
    Дополнительные параметры в тег изображения можно передать в виде массива в функцию the_post_thumbnail() или get_the_post_thumbnail()

    $size = 'post-thumbnail';
    
    $attr = array(
    	'class' => 'attachment-' . $size,
    	'alt'   => the_title_attribute(),
    );
    
    the_post_thumbnail( $size, $attr );


    В вашем решении в функцию .attr() нужно передавать переменную, а не строку

    jQuery( 'img' ).attr( 'title', image_alt );
    Ответ написан
    Комментировать
  • Как войти в ящик доменной бизнес-почты на mail.ru?

    https://biz.mail.ru/login/ваш_домен или просто через главную страницу https://mail.ru, введите e-mail (вместе с собакой) в качестве логина.
    Ответ написан
    2 комментария
  • Как добавить свое значение к цене вариации?

    wppanda5
    @wppanda5 Куратор тега WordPress
    WordPress Mедведь
    //функция для изменения цен с помощью числа
    function wpp_price_plus() {
        return 100;
    }
    
    add_filter('woocommerce_product_variation_get_regular_price', 'wpp_custom_price', 99, 2 );
    add_filter('woocommerce_product_variation_get_price', 'wpp_custom_price', 99, 2 );
    function wpp_custom_price( $price, $product ) {
        return (float) $price + wpp_price_plus();
    }
    
    add_filter('woocommerce_variation_prices_price', 'wpp_custom_variable_price', 99, 3 );
    add_filter('woocommerce_variation_prices_regular_price', 'wpp_custom_variable_price', 99, 3 );
    function wpp_custom_variable_price( $price, $variation, $product ) {
         // Удаление кэшированной цены продукта
        wc_delete_product_transients($variation->get_id());
        return (float) $price + wpp_price_plus();
    }
    
    // Обработка кэширования цен
    add_filter( 'woocommerce_get_variation_prices_hash', 'add_price_plus_to_variation_prices_hash', 99, 3 );
    function add_price_plus_to_variation_prices_hash( $price_hash, $product, $for_display ) {
        $price_hash[] = wpp_price_plus();
        return $price_hash;
    }
    Ответ написан
    Комментировать
  • Как правильно подключить поле TinyMCE в Customizer?

    V_A_B
    @V_A_B
    ¯\_(ツ)_/¯
    Подсмотрел в гайд, вот здесь, здесь есть образец создания класса-контрола в самом начале, но простого нотиса, который ничего не позволяет менять

    а по завершению стати ссылка на гид. там и лежит весь этот фарш. скачивайте архив и берете исходники нужные из файлов... они там по сути подписаны

    class ✅

    <?php
    if(!defined('ABSPATH')){exit;}
    class Skyrocket_TinyMCE_Custom_control extends WP_Customize_Control{
    	/**
    	 * The type of control being rendered
    	 */
    	public $type = 'tinymce_editor';
    	/**
    	 * Enqueue our scripts and styles
    	 */
    	public function enqueue(){
    		wp_enqueue_script( 'skyrocket-custom-controls-js', get_template_directory_uri() . '/js/customizer.js', array( 'jquery' ), '1.0', true );
    		wp_enqueue_style( 'skyrocket-custom-controls-css', get_template_directory_uri() . '/css/customizer.css', array(), '1.0', 'all' );
    		wp_enqueue_editor();
    	}
    	/**
    	 * Pass our TinyMCE toolbar string to JavaScript
    	 */
    	public function to_json() {
    		parent::to_json();
    		$this->json['skyrockettinymcetoolbar1'] = isset( $this->input_attrs['toolbar1'] ) ? esc_attr( $this->input_attrs['toolbar1'] ) : 'bold italic bullist numlist alignleft aligncenter alignright link';
    		$this->json['skyrockettinymcetoolbar2'] = isset( $this->input_attrs['toolbar2'] ) ? esc_attr( $this->input_attrs['toolbar2'] ) : '';
    		$this->json['skyrocketmediabuttons'] = isset( $this->input_attrs['mediaButtons'] ) && ( $this->input_attrs['mediaButtons'] === true ) ? true : false;
    	}
    	/**
    	 * Render the control in the customizer
    	 */
    	public function render_content(){
    	?>
    		<div class="tinymce-control">
    			<span class="customize-control-title"><?php echo esc_html( $this->label ); ?></span>
    			<?php if( !empty( $this->description ) ) { ?>
    				<span class="customize-control-description"><?php echo esc_html( $this->description ); ?></span>
    			<?php } ?>
    			<textarea id="<?php echo esc_attr( $this->id ); ?>" class="customize-control-tinymce-editor" <?php $this->link(); ?>><?php echo esc_attr( $this->value() ); ?></textarea>
    		</div>
    	<?php
    	}
    }



    подключенный css в function enqueue класса ✅

    /* ==========================================================================
       Textarea/TinyMCE
       ========================================================================== */
    .tinymce-control textarea {
    	width: 100%;
    	padding: 10px;
    }



    подключенный js в function enqueue класса ✅

    jQuery( document ).ready(function($) {
    	"use strict";
    	/**
    	 * TinyMCE Custom Control
    	 *
    	 * @author Anthony Hortin <http://maddisondesigns.com>
    	 * @license http://www.gnu.org/licenses/gpl-2.0.html
    	 * @link https://github.com/maddisondesigns
    	 */
    
    	$('.customize-control-tinymce-editor').each(function(){
    		// Get the toolbar strings that were passed from the PHP Class
    		var tinyMCEToolbar1String = _wpCustomizeSettings.controls[$(this).attr('id')].skyrockettinymcetoolbar1;
    		var tinyMCEToolbar2String = _wpCustomizeSettings.controls[$(this).attr('id')].skyrockettinymcetoolbar2;
    		var tinyMCEMediaButtons = _wpCustomizeSettings.controls[$(this).attr('id')].skyrocketmediabuttons;
    
    		wp.editor.initialize( $(this).attr('id'), {
    			tinymce: {
    				wpautop: true,
    				toolbar1: tinyMCEToolbar1String,
    				toolbar2: tinyMCEToolbar2String
    			},
    			quicktags: true,
    			mediaButtons: tinyMCEMediaButtons
    		});
    	});
    	$(document).on( 'tinymce-editor-init', function( event, editor ) {
    		editor.on('change', function(e) {
    			tinyMCE.triggerSave();
    			$('#'+editor.id).trigger('change');
    		});
    	});
    });



    Добавляем настройки в кастомайзер ✅

    ...
    $customizer->add_setting( 'sample_tinymce_editor',
       array(
          'default' => '',
          // 'transport' => 'postMessage',
          'sanitize_callback' => 'wp_kses_post'
       )
    );
    $customizer->add_control( new Skyrocket_TinyMCE_Custom_control( $customizer, 'sample_tinymce_editor',
       array(
          'label' => __( 'TinyMCE Control' ),
          'description' => __( 'This is a TinyMCE Editor Custom Control' ),
          'section' => 'section_VAB_Agree',
          'input_attrs' => array(
             'toolbar1' => 'bold italic bullist numlist alignleft aligncenter alignright link',
             'mediaButtons' => true,
          )
       )
    ));
    ...



    Выводим где-то ✅

    echo get_theme_mod('sample_tinymce_editor');


    Результат ✅

    6196a4e88705c960309249.jpeg

    6196a5083210a592782074.jpeg
    Ответ написан
    Комментировать
  • Mozilla не видит контуров svg(stroke), как пофиксить?

    RAX7
    @RAX7
    В названии аргументов фильтра ошибка.
    <filter id="filter0_b_601_49" x="93.425" y="129.676" width="237" height="445.648" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
          <feFlood flood-opacity="0" result="BackgroundImageFix"></feFlood>
    -      <feGaussianBlur in="BackgroundImage" stdDeviation="25"></feGaussianBlur>
    +      <feGaussianBlur in="BackgroundImageFix" stdDeviation="25"></feGaussianBlur>
          <feComposite in2="SourceAlpha" operator="in" result="effect1_backgroundBlur_601:49"></feComposite>
          <feBlend mode="normal" in="SourceGraphic" in2="effect1_backgroundBlur_601:49" result="shape"></feBlend>
        </filter>

    Хром видимо игнорирует кривой фильтр и отрисовывает без него, а лиса просто отказывается рисовать элемент с таким фильтром.
    Зачем вообще там нужен этот фильтр для меня осталось загадкой
    Ответ написан
    2 комментария
  • Какое свойство в svg может дать больше места для анимации?

    @antares4045
    viewBox="-15 -15 926 735"

    правда это слегка уменьшит масштаб картинки, но с этим, я думаю вы справитесь
    Ответ написан
    Комментировать
  • Как сделать инпут, в котором перечисляются числа через запятую? Или как преобразовать цифры строки в цифры-цифры?

    SiteCenter
    @SiteCenter
    PHP программист из прекрасного города Владимира
    На самом деле довольно странная задача, скорее всего лучше сделать отдельный input на каждое число.
    Однако, вы можете использовать input type="text", передать ваши числа в виде строки на сервер и разбить строку с помощью explode()
    Пример:
    <?php
    $input_text = '5,6,3,4';
    $input_arr = explode(',', $input_text);
    var_dump($input_arr);

    Соответственно в переменную $input_text необходимо передать вашу строку из input. Затем можете работать с массивом $input_arr, например
    <?php
    echo $input_arr[0];

    выведет 5
    Ответ написан
    Комментировать