Ответы пользователя по тегу WordPress
  • Как отключить кеширование шаблонов в wordpress?

    Tolly
    @Tolly Автор вопроса
    Вопрос решил, дело оказалось в кеше компьютера, доступ к файлам у меня организован через WebDrive, возможно что-то закешировалось.

    Что сделал:
    зашел через терминал на сервер и удалил файл, затем создал снова

    Кстати сброс opcache делал так:
    создал файл opchache-reset.php с содержанием <?php opcache_reset(); ?>
    сброс отрабатывал нормально, но мне это не помогло, помогло только удаление файла через терминал.
    Ответ написан
    Комментировать
  • В чем может быть проблема что tinyMCE редактор не отрабатывает пользовательские стили в редакторе?

    add_action( 'after_setup_theme', 'my_theme_add_editor_styles' );
    function my_theme_add_editor_styles() {
    	add_editor_style( 'editor-style.css' );
    }


    наверно дело в хуке
    Ответ написан
    Комментировать
  • Как добавить свою иконку в шапку редактора (классического) Wordpress?

    Tolly
    @Tolly Автор вопроса
    https://code.tutsplus.com/tutorials/guide-to-creat...
    https://www.tiny.cloud/docs/quick-start/

    functions.php
    # Шорткод [youtube] - плеер youtube на странице сайта
    function youtube_player($atts) {
      $atts = shortcode_atts( array(
            'vid' => 'k_okcNVZqqI', // id видео на ютубе
            'vol' => '20' // громкость от 0..100*/
        ), $atts );
    
      # генерируем уникальное id плеера
      $id = md5(uniqid(rand(),true));
    
      return "<div class=\"player_wrapper\"><div class=\"youtube_player\" data--video=\"id:'{$id}',videoId:'{$atts['vid']}',volume:'{$atts['vol']}'\"></div></div>";
    }
    
    add_shortcode('youtube', 'youtube_player');
    
    
    
    
    # Добавление кнопок в редактор TinyMCE, проверка что находимся в админпанели
    if ( is_admin() ) {
    	add_action( 'init', 'setup_tinymce_plugin' );
    }
    
    # Дополнительные проверки, на предмет стоит ли вообще подключать плагин
    function setup_tinymce_plugin() {
    
    	# Проверяем, может ли залогиненный пользователь редактировать посты или страницы
    	if ( ! current_user_can( 'edit_posts' ) && ! current_user_can( 'edit_pages' ) ) {
    	  return;
    	}
    
    	# Проверяем пользуется ли пользователь визуальным редактором TinyMCE
    	if ( get_user_option( 'rich_editing' ) !== 'true' ) {
    		return;
    	}
    
    	# Подключаем фильтр
    	add_filter( 'mce_external_plugins', 'wptuts_add_buttons' );
    	add_filter( 'mce_buttons', 'wptuts_register_buttons' );
    }
    
    
    function wptuts_add_buttons( $plugin_array ) {
        $plugin_array['custom_link_class'] = get_template_directory_uri() . '/assets/js/tinymce.js';
        return $plugin_array;
    }
    function wptuts_register_buttons( $buttons ) {
        array_push( $buttons, 'dropcap', 'attention', 'youtube' );
        return $buttons;
    }
    tinymce.js
    (function() {
      tinymce.create('tinymce.plugins.Wptuts', {
        init : function(ed, url) {
          ed.addButton('dropcap', {
            title : 'Буквица',
            cmd : 'dropcap',
            image : url + '/btn-dropcap.png'
          });
    
          ed.addButton('attention', {
            title : 'Выделение параграфа',
            cmd : 'attention',
            image : url + '/btn-attention.png'
          });
    
          ed.addButton('youtube', {
            title : 'Добавление youtube плеера на страницу',
            cmd : 'youtube',
            image : url + '/btn-youtube.png'
          });
    
          /* Добавляем в style.css и editor-style.css, стиль:
            .dropcap {
              float: left;
              font-size: 90px;
              padding-right: 7px;
              line-height: 72px; } */
    
          ed.addCommand('dropcap', function() {
            var selected_text = ed.selection.getContent();
            var return_text = '';
            return_text = '<span class="dropcap">' + selected_text + '</span>';
            ed.execCommand('mceInsertContent', 0, return_text);
          });
    
          ed.addCommand('attention', function() {
            var selected_text1 = ed.selection.getContent();
            var return_text1 = '';
            return_text1 = '<span class="two_column align_center"><i class="icon-attention"></i><p>' + selected_text1 + '</p></span>';
            ed.execCommand('mceInsertContent', 0, return_text1);
          });
    
          ed.addCommand('youtube', function() {
            var vid = prompt('Введите id ролика на youtube: ');
            if (vid.length > 7) {
              shortcode = '[youtube vid="' + vid + '"]';
              ed.execCommand('mceInsertContent', 0, shortcode);
            } else {
              alert("Длина id ролика должна быть больше 7 символов.");
            }
          });
        },
      });
        tinymce.PluginManager.add( 'custom_link_class', tinymce.plugins.Wptuts );
    })();


    Только средняя кнопка attention как-то работает не очень, не вставляем мою обертку и все ((
    Ответ написан
    Комментировать
  • Почему не работает пагинация?

    Tolly
    @Tolly Автор вопроса
    Комментировать
  • Как в Wordpress работать с куками?

    Tolly
    @Tolly Автор вопроса
    По предложению Анатолия, накидал скрипт для работы с куками:
    function cookie_test() {
    	global $cookie_test;
    	$cookie_test = false;
    
    	# Определяем имя файла
    	$url = parse_url($_SERVER['REQUEST_URI']);
    	$path = pathinfo($url['path']);
    	$basename = $path['basename'];
    
    	if( !isset($_COOKIE[$basename]) ) $cookie_test = true;	
    	setcookie( $basename, 1, time()+3600 );
    }
    add_action('init', 'cookie_test');


    global $cookie_test;
    if($cookie_test) echo "Страница еще не просмотрена!";


    Ну вроде заработало, еще раз спасибо Анатолию за идею.
    Ответ написан
    Комментировать
  • Как передать переменную в фильтр the_post_thumbnail?

    Tolly
    @Tolly Автор вопроса
    the_post_thumbnail('slider', array('class' => 'buka', 'id' => 'tuka'));


    в functions.php
    function multi_format_thumbnail( $html, $post_id, $post_thumbnail_id, $size, $attr ){
            # aaa имеет значение 'slider'
    	$aaa = $size;
    
            # Присваиваем $bbb = 'buka'
            # Иначе ошибка: "Undefined variable: bbb"
            $bbb = '';
            # Иначе ошибка: "Illegal string offset 'class'"
    	if(!is_array($attr)) $attr = array();
            # Иначе ошибка: "Uninitialized string offset: 0"
    	if (array_key_exists('class', $attr)) $bbb=$attr['class'];
    
            # Аналогично присваивается для $ccc='tuka'
    
    	# url картинки thumbnail
    	$url = get_the_post_thumbnail_url();
    	$html = "<img src=\"" . $url . "\" data1=\"" . $aaa . "\" data2=\"" . $bbb . "\" data3=\"" . $ccc . "\">";
    	return $html;
    }
    add_filter('post_thumbnail_html', 'multi_format_thumbnail', 10, 5);
    Ответ написан
    Комментировать
  • Как задать title и alt для has_post_thumbnail?

    Tolly
    @Tolly Автор вопроса
    в обоих файлах решается аналогично
    if ( has_post_thumbnail() ) {
    	the_post_thumbnail();
    } else {
    	$thumb_alt = get_the_excerpt();
    	$thumb_title = get_the_title();
    	echo "<picture><img src=\"" . get_template_directory_uri() . "/assets/images/not-image.jpg\" class=\"image-cover\" data-object-fit=\"cover\" alt=\"" . $thumb_alt . "\" title=\"" . $thumb_title . "\"></picture>";
    }
    Ответ написан
    Комментировать
  • Почему не работает обрезка статьи функцией the_content() в Wordpress?

    Tolly
    @Tolly Автор вопроса
    Проблема была в том, что нужно было писать <!--more--> в закладке "Текст", а если писать в закладке "Визуально", то текст заменится на &lt;!--more--&gt;
    Ответ написан
    Комментировать
  • Как написать php-код (в wordpress | post-thumbnails) чтобы заработало?

    Tolly
    @Tolly Автор вопроса
    Заменил get_the_post_thumbnail_url() на the_post_thumbnail_url() вроде заработало.
    Ответ написан
    Комментировать
  • Почему не загружается Elementor в wordpress?

    Tolly
    @Tolly Автор вопроса
    Еще один момент смущает, но на http же работает.
    Вот это:
    5b09696ee2563562304576.png

    Тут написано, что не может соединиться с сервером: my.elementor.com
    Я проверил, и действительно я не могу подключится к этому домену со своего компьютера.
    Пробую подключиться через online proxy - все работает, а без прокси нет.
    Хотя домен elementor.com открывается.
    Магия какая-то..

    Захожу в консоль wordpress, который https, выбираю "плагины > установить новый", выбираю любой плагин, пункт "Детали", кликаю на него, открывается пустое окно
    Ссылка имеет вид: https://....................

    Захожу в консоль wordpress, который http, выбираю "плагины > установить новый", у каждого плагина, есть пункт "Детали", кликаю на него, открываются детали по плагину
    Ссылка имеет вид: http://..............

    Все что идет после // идентично, что через http, что через https.

    Браузер один и тот же, только разные закладки.

    PS. В Debian файрвол - выключен.

    ==============================================================
    Решение найдено:
    на Debian в Nginx для снижения уязвимость сайта для кликджекинг-атак, у меня был прописан заголовок:
    add_header X-Frame-Options DENY;
    это как раз запрещало загрузку контента в frame/iframe.

    Сделал:
    add_header X-Frame-Options SAMEORIGIN;
    Позволяет загрузку контента в frame/iframe только, если фрейм и страница, его загружающая, расположены на одном домене.

    Полет нормальный! Все работает!
    Ответ написан
    Комментировать