• Связь репутации между двумя таблицами?

    @Aricus
    Вопрос плохо сформулирован. Если я правильно понял, вы хотите, чтобы plus_rep и minus_rep в reputation показывали не репутацию на момент изменения, а текущую репутацию? Тогда лучше удалите эти колонки, и не плодите сущности сверх необходимого. Получить эти данные в запросе вы можете через INNER JOIN . Связь таблиц добавляет FOREIGN KEY , который нужен только для контроля целостности данных. Например, если вы попытаетесь добавить в таблицу reputation user_id, которого нет в таблице users, база выдаст ошибку. Чтобы его добавить, войдите в таблице reputation в Структура - Связи. Выберите колонку users_id, вашу базу данных, таблицу users, и в ней колонку id или user_id (не понятно, с какой вы хотите связать. Чтобы не путаться, лучше всегда связывать с id).
    Ответ написан
    Комментировать
  • Как так разместить список подменю?

    @Aricus
    Странное дизайнерское решение. Лучше бы, конечно, по-другому расположить, но если необходимо именно так, видимо, без js не обойдётся. Нужно сделать функцию, которая, изменяет классы, выстраивая элементы в нужном порядке, и вызывать её при загрузке страницы и изменении ширины окна.
    $(document).ready(function () {
    	functuion resizeSubmenu() {
    		...
    	}
    	resizeSubmenu();
    	$(window).on('resize', function(){
    		resizeSubmenu();
    	});
    });
    Ответ написан
  • Как элегантно скрыть optgroup в которой скрыты все option'ы?

    @Aricus
    Можно у каждой optgroup подсчитать количество дочерних option и количество дочерних option с классом hidden. Если количество совпадает, скрыть. Если через show/hide скрывать option, тогда нужно будет проверять css, что сложнее (навскидку не знаю, можно ли это сделать без цикла).
    Ответ написан
  • Дубли страниц. Как убрать?

    @Aricus
    Думаю, стоит создать дерево категорий с такими же названиями, и ссылки тоже делать через категории. Ведь для wordpress, насколько я знаю, никакой родительской зависимости между пользовательскими типами данных не предусмотрено.
    Ответ написан
  • Как правильно реализовать поиск по сайту?

    @Aricus
    Почему бы в search.php не проигнорировать встроенный цикл постов, а сделать собственный, через new WP_Query? Туда можно и разные типы записей засунуть.
    $warsztaty_q = new WP_Query(array(
        'post_type' => array('kalendarium', 'warsztaty')

    Только нужно как-то прописать условие поиска, но, думаю, это будет легче, чем через плагины.
    Ответ написан
  • Как сформировать многомерный после выборки из mysql?

    @Aricus
    Вы слишком сильно боитесь нагружать базу данных. Нет ничего страшного, чтобы получить сначала список курсов, а потом в цикле получить список студентов для каждого курса. У вас же этих курсов не тысячи. А если тысячи, стоит делать пагинацию. Я, конечно, не проверял, но мне кажется, что обработка результатов "запроса, на получение всего" нагрузит ваш сервер не меньше.
    Ответ написан
    Комментировать
  • Можно ли как то использовать шорткод cf7 в отдельной странице wordpress?

    @Aricus
    Лично для меня этот механизм довольно странный. Шорткоды, вообще-то, придуманы как раз для того, чтобы использовать их на страницах, так что хотя бы попробовать ничто не мешает. Напишите [cf7] в контенте страницы, а в теме выводите контент через
    <?=do_shortcode(get_post()->post_content)?>
    Ответ написан
  • Чем вызвана ошибка Failed to load resource: the server responded with a status of 500 (), при установке WP на хост?

    @Aricus
    У меня несколько раз было из-за ошибок в .htaccess , это наиболее вероятно. .htaccess для локального сервера не подходят для глобального. Но, в принципе, причины могут быть самые разные. Вот мой .htaccess с последнего работающего проекта на wordperss. Есть небольшой шанс, что он подойдёт и вам:
    RewriteEngine On
    RewriteCond %{ENV:HTTPS} !on
    RewriteRule ^.*$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
    
    php_flag log_errors on
    # BEGIN WordPress
    # Строки между `BEGIN WordPress` и `END WordPress` были созданы автоматически.
    # Они могут быть изменены только фильтрами WordPress.
    # Все изменения между этими отметками будут перезаписаны.
    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteRule ^index\.php$ - [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . index.php [L]   
    </IfModule>
    
    # END WordPress
    
    php_value upload_max_filesize 50M
    php_value post_max_size 51M
    Ответ написан
    Комментировать
  • Как добавить в результаты поиска страницы, данные на которых выведены через WP_Query?

    @Aricus
    Изменить страницу поиска search.php, добавив до или после вывода результатов поиска точно такой же вывод, но по вашему запросу.
    Ответ написан
    Комментировать
  • Как вывести произвольные поля в wp_nav_menu?

    @Aricus
    Вам следует прописать сделать своё отображение меню (walker). Приведу пример из своего проекта, может, поможет разобраться. Мне в своё время было непросто.
    В header.php:
    <div class="wrapper">
    	<?php wp_nav_menu( array(
    		'sort_column' => 'menu_order',
    		'theme_location' => 'primary-menu',
    		'container' => false,
    		'menu_class' => 'navigation_menu',
    		'walker' => new My_Walker_Nav_Menu()
    	) ); ?>
    </div>

    В functions.php:
    // Главное меню
    class My_Walker_Nav_Menu extends Walker_Nav_Menu {
      function start_lvl(&$output, $depth = 1, $args = Array()) {
        $indent = str_repeat("\t", $depth);
        $output .= "\n$indent<ul class=\"navigation_submenu-".$depth."\">\n";
      }
    	public function start_el( &$output, $item, $depth = 0, $args = array(), $id = 0 ) {
    		if ( isset( $args->item_spacing ) && 'discard' === $args->item_spacing ) {
    			$t = '';
    			$n = '';
    		} else {
    			$t = "\t";
    			$n = "\n";
    		}
    		$indent = ( $depth ) ? str_repeat( $t, $depth ) : '';
    
    		$classes = empty( $item->classes ) ? array() : (array) $item->classes;
    		$classes[] = 'menu-item-' . $item->ID;
    
    		$args = apply_filters( 'nav_menu_item_args', $args, $item, $depth );
    
    		$class_names = join( ' ', apply_filters( 'nav_menu_css_class', array_filter( $classes ), $item, $args, $depth ) );
    		$class_names = $class_names ? ' class="' . esc_attr( $class_names ) . '"' : '';
    
    		$id = apply_filters( 'nav_menu_item_id', 'menu-item-'. $item->ID, $item, $args, $depth );
    		$id = $id ? ' id="' . esc_attr( $id ) . '"' : '';
    
    		$output .= $indent . '<li' . $id . $class_names .'>';
    
    		$atts = array();
    		$atts['title']  = ! empty( $item->attr_title ) ? $item->attr_title : '';
    		$atts['target'] = ! empty( $item->target )     ? $item->target     : '';
    		$atts['rel']    = ! empty( $item->xfn )        ? $item->xfn        : '';
    		$atts['href']   = ! empty( $item->url )        ? $item->url        : '';
    
    		$atts = apply_filters( 'nav_menu_link_attributes', $atts, $item, $args, $depth );
    
    		$attributes = '';
    		foreach ( $atts as $attr => $value ) {
    			if ( ! empty( $value ) ) {
    				$value = ( 'href' === $attr ) ? esc_url( $value ) : esc_attr( $value );
    				$attributes .= ' ' . $attr . '="' . $value . '"';
    			}
    		}
    
    		$title = apply_filters( 'the_title', writeTitle($item->title), $item->ID );
    
    		$title = apply_filters( 'nav_menu_item_title', $title, $item, $args, $depth );
    		
    		
    		if ($depth == 1) {
    			$writeIcon = '<div class="submenu__icon">
    				<div class="submenu__icon__img" style="background-image: url('.get_illImg($item->object_id)['url'].');"></div>
    			</div>&nbsp;';
    		} else {
    			$writeIcon = '';
    		}
    		$item_output = $args->before;
    		if (($depth == 1) && (get_field('activity', 'category_' .$item->object_id) == 'inactive')) {
    			$item_output .= '<div' .addTooltip($item->object_id). '>';
    			$item_output .= $writeIcon;
    			$item_output .= $title;
    			$item_output .= '</div>';
    		} else {
    			$item_output .= '<a'. $attributes .'' .addTooltip($item->object_id). '>';
    			$item_output .= $writeIcon;
    			$item_output .= $args->link_before . $title . $args->link_after;
    			$item_output .= '</a>';
    		}
    		$item_output .= $args->after;
    
    		$output .= apply_filters( 'walker_nav_menu_start_el', $item_output, $item, $depth, $args );
    	}
    	
    }
    Ответ написан
    Комментировать
  • Как сделать переход на single страницу?

    @Aricus
    Во-первых, код следует приводить не в скриншотах, а в специальных шорткодах (значок > на панели). Во-вторых, вам лучше разобраться в структуре файлов темы wordpress. Файл singlepost.php по идее вообще не должен использоваться движком wordpress, а использовать index.php для вывода контента - не лучшая идея, потому что это - последняя точка вывода для любой страницы, для которой не нашёлся более определённый файл. Подробнее здесь

    Чтобы получить доступ к статьям на любой странице (кроме категории этой статьи), вам следует их найти, и в цикле делать ссылки, или что вы хотите, примерно так (запрос WP_Query для поиска для вывода 3 последних новостей из одного моего проекта, прочитайте сами, чтобы вывести именно то, что вам нужно):
    <div class="main-news">
    	<?php
    	$pc = new WP_Query('cat=14&orderby=date&posts_per_page=3');
    	while ($pc->have_posts()) :
    		$pc->the_post();?>
    		<a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
    	<?php endwhile; ?>
    </div>
    Ответ написан
    Комментировать
  • Как собрать контакт-лист из истории переписок?

    @Aricus
    Причина ясна, вы группируете по уникальным значениям как первого, так и второго столбца:
    GROUP BY user_to, user_from

    Если MIN и MAX работают со строками, то должно сработать такое:
    GROUP BY MAX(user_to, user_from), MIN(user_to, user_from)

    Другой вариант, через тернарный оператор:
    GROUP BY if(user_to = :user_id, user_from, user_to)
    Ответ написан
    3 комментария
  • Как выровнять карточки товаров woocommerce тема Astra?

    @Aricus
    Нужно подправить CSS. Если вы не умеете редактировать тему, в настройках темы wordpress есть возможность добавить свой CSS. Правильный ответ зависит от того, как реализована вёрстка в этой теме. Самый простой вариант - задать min-height для блока с названием, равным 2 строкам. Однако, если будет название в 3 строки, оно всё равно будет съезжать. Если проект выложен в интернет, дайте ссылку, и я смогу ответить точнее.
    Ответ написан
    3 комментария
  • Как сделать пагинацию текста?

    @Aricus
    Как узнать при сколе на какой странице находишься в данный момент?

    Сохранять или в get-параметрах, сессиях/куки или js переменных, в зависимости от механизма работы. И выводить при необходимости. Я только не понял, что в данном контексте означает "скол".
    Как осуществить переход по страницам?

    При нажатии на кнопки пагинации или при скроле до верхнего/нижнего края какого-то блока будет происходить переход на другую страницу, или срабатывание ajax, или срабатывание простого js-скрипта, опять же в зависимости от механизма.
    Ответ написан
    Комментировать
  • Как изменить стили?

    @Aricus
    Сначала везде тупо заменяешь left на right и наоборот. Дальше осталось только dws-button спозиционировать по правому краю (margin-left: auto;)
    body{
     background-image: url("https://dwstroy.ru/lessons/les3397/demo/img/ep_naturalwhite.png");
    }
    .social{
     position: fixed;
     top: 50px;
     right: 0;
     z-index: 1000;
    }
    .dws-button{
     background-color: #3b5998;
     width: 100px;
     height: 25px;
     padding: 5px;
     transition: all 0.5s;
    }
    a{
     color: #ffffff;
     text-decoration: none;
    }
    a i.fa{
     font-size: 25px;
     text-align: center;
     display: block;
    }
    .dws-share{
     float: right;
     width: 40px;
    }
    .dws-text{
     float: left;
     font-size: 20px;
     position: relative;
     top: 2px;
     left: 5px;
    }
    .dws-facebook {background-color: #3b5998;}
    .dws-vk {background-color: #507299;}
    .dws-twitter {background-color: #33bdf1;}
    .dws-youtube {background-color: #e62117;}
    .dws-odnoklassniki {background-color: #ee8208;}
    .dws-envelope-o {background-color: #656766;}
    
    .dws-button{
     width: 40px;
     height: 25px;
     padding: 5px;
     overflow: hidden;
     margin-left: auto;
    }
    .dws-button:hover{
     background-color: #000;
     width: 50px;
     padding-right: 15px;
    }
    .dws-facebook:hover{width: 75px}
    .dws-vk:hover,.dws-youtube:hover{width: 95px}
    Ответ написан
    Комментировать
  • Как сделать скроллинг в меню для мобильной версии?

    @Aricus
    В мобильной вёрстке нужно убрать
    .fixed-top {
        position: fixed;
    }

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

    @Aricus
    Проще всего уменьшать весь пазл целиком. Вот моё решение похожей задачи, мне нужно было адаптировать карусель:
    @media only screen and (max-width: 1024px)
    .bee3D--effect__carousel {
        transform: scale(0.9);
        margin: -38px 0;
    }
    @media only screen and (max-width: 786px)
    .bee3D--effect__carousel {
        transform: scale(0.8);
        margin: -65px 0;
    }
    @media only screen and (max-width: 610px)
    .bee3D--effect__carousel {
        transform: scale(0.67);
        margin: -93px 0;
    }
    @media only screen and (max-width: 480px)
    .bee3D--effect__carousel {
        transform: scale(0.55);
        margin: -120px 0;
    }
    Ответ написан
    Комментировать
  • Где подключены шрифты в теме WP?

    @Aricus
    Если шрифты грузятся со стороннего сайта, то папки в теме нет. Шрифты подключаются в конкретные места на странице в style.css или в других .css файлах. Подгружаться они могут во многих местах, наиболее вероятные - style.css и header.php.
    Ответ написан
    Комментировать
  • Как составить регулярное выражение для замены (пробел дефис пробел " - ") на дефис "-"?

    @Aricus
    Не проверял, но, вроде, должно работать. Не знаю, откуда вы взяли | в качестве ограничителей. Во всех известных мне языках ограничители регулярных выражений - / . Также не нужно плодить переменные сверх необходимости.
    $text = preg_replace('/[\s]+/s', ' ', $text);
    $text = preg_replace('/[\s\-]*-[\s\-]*/s', '-', $text);
    echo $text ;
    Ответ написан
  • Как принудительно вызвать событие onload или как мне отключить индикатор загрузки?

    @Aricus
    А что если сделать всё после load? Сначала ваши скрипты, а потом импортировать скрипты ВК прямо внутри скрипта с помощью
    @import url("");
    Ответ написан