<noindex>
<div class="mobile-menu">
<div class="mobile-head"></div> <!-- бургер, логотип, etc -->
<div class="mobile-body"></div> <!-- меню, поиск, телефоны, etc -->
</div>
</noindex>
.mobile-body {
width: 100%;
height: 100vh;
padding-bottom: 70px; //"волшебное число", даем отступ снизу, чтобы можно было прокручивать полностью менюшку
background: #fff;
position: fixed;
top: 50px; //50px - высота mobile-head, обычно хватает для телефонов
left: -100%;
transition: left 0.3s;
overflow: auto;
display: block;
}
body.menu-open .mobile-body {
left: 0;
}
$args = array(
'post_type' => 'product_variation',
'post_status' => array( 'private', 'publish' ),
'numberposts' => -1,
'orderby' => 'menu_order',
'order' => 'ASC',
'post_parent' => get_the_ID() // get parent post-ID
);
$variations = get_posts( $args );
foreach ( $variations as $variation ) {
// get variation ID
$variation_ID = $variation->ID;
// get variations meta
$product_variation = new WC_Product_Variation( $variation_ID );
// get variation featured image
$variation_image = $product_variation->get_image();
// get variation price
$variation_price = $product_variation->get_price_html();
//get variation name
$variation_name = $product_variation->get_variation_attributes();
echo "<p class='product_price' >";
if ( $variation_name [ 'attribute_pa_СЛАГ_АТРИБУТА' ] ) {
$fasovka = [ 'attribute_pa_СЛАГ_АТРИБУТА' => $variation_name [ 'attribute_pa_СЛАГ_АТРИБУТА'] ];
echo wc_get_formatted_variation ( $fasovka );
}
echo ($variation_price);
echo "</p>";
}
if( get_field('group-select') == 'high' ):
и тут мы пишем допустим вашу обертку с нужным классом
elseif ( get_field('group-select') == 'default' ):
сюда пишем обычную в вашем случае маленькую обертку с нужным классом
elseif( get_field('group-select') == 'high-width' ):
и сюда пишем широкую обертку и тд крч
endif;
1. В чем подводные камни готовых темы Wordpress?В том что это вордпресс? Ни нормальной архитектуры, ни нормальной функциональности вы на базе движка блогов не получите. Да, он популярен, в основном за счет простоты базовой настройки, но как только возникает задача чуть сложнее вывести 20 записей блога на страничку - начинаются вопросы как с реализацией, так и с производительностью.
2. Может нужна другая CMS?При серьезном подходе цмс как вариант для коммерческого проекта отпадает сразу, вы можете пожертвовать некоторым функционалом для создания MVP, но "писать" на цмс коммерческий продукт = стрелять себе в ногу в начале гонки.
3. В будущем нужно будет разрабатывать сайт с нуля или получится улучшать первоначальную версию?В цмс основная фича - возми готовое как есть и пользуйся, в этом виде оно хорошо выполняет свою задачу, во всех случаях требующих серьезной кастомизации цмс - не обладает достаточной гибкостью для этого, или эта гибкость выходит боком, в следствие заложенных в основу "универсальных алгоритмов", которые, естественно, всегда будут уступать специальным, которые подходят под конкретную задачу.
4. Какие есть другие варианты (готовые решения, заказать разработку)?Готовые решения наверняка есть, другой вопрос на чем и как они написаны, + всегда остается вопрос работы над кастомными фишками, которые собственно определяют конкурентное преимущество, ну, не считая рекламы, без которой все вложенные средства в разработку лучше потратить на хавчик и бухло - пользы будет больше, а нервов потратится меньше.
5. Сколько это может стоить?Как договоритесь, может за 300 баксов, может за 20 000 баксов, без ТЗ и дизайна никто не скажет, суть в том что требуется определенное количество человекочасов на ту или иную фишку, почти все можно посчитать +-, но все равно на 100% никто не уверен что учли все-все, где то да возникнут неопределенные моменты, неучтенные нюансы и т.п., так что сначала ТЗ, потом оценка.
<?php $terms = get_terms( array(
'taxonomy' => 'product_cat',
'hide_empty' => true,
'pad_counts'=> true,
'orderby' => 'name',
'parent' => 0
) ); ?>
<?php if($terms) : ?>
<?php foreach($terms as $term) : ?>
<h2 class="subcategory-title"><a href="<?php echo get_term_link($term->term_id);?>"><?php echo $term->name;?></a></h2>
<!--<div class="subcategory-descripton"><p><?php //if($term->description) : ?><?php //echo $term->description; ?><?php //else: ?>Описание термина таксономии<?php //endif; ?></p></div>-->
<?php // Создаем массив терминов детей текущего термина текущей таксономии
$tax = $term->taxonomy;
$children_terms = get_terms( array(
'taxonomy' => $tax,
'hide_empty' => false,
'parent' => $term->term_id
) ); ?>
<?php if($children_terms): // если есть дочерние категории ?>
<ul><?php foreach ($children_terms as $children_term) : ?>
<?php $link = get_term_link($children_term); ?>
<li style="margin-left: 10px;"><a href="<?php echo $link ?>";><?php echo $children_term->name ?></a></li>
<!--<p class="count"><?php //echo $children_term->count ?></p>-->
<?php endforeach; ?></ul>
<?php endif; // конец условия - если есть дочерние термины таксономии ?>
<?php endforeach; ?>
<?php endif; ?>
<p class="count"><?php if ($term->count > 0) : ?><?php echo $term->count; ?><?php else: ?>0<?php endif; ?></p>
add_filter( 'template_include', 'mobile_template', 99 );
function mobile_template( $template ) {
if ( wp_is_mobile() ) {
$new_template = locate_template( array( 'mobile-template.php' ) );
if ( '' != $new_template ) {
return $new_template;
}
}
return $template;
}
Мне же нужно чтобы меню было в другом месте, другого вида.
<?php
/**
* The template for displaying all single posts
*/
get_header(); ?>
<div class="container">
<img data-src="<?php echo get_template_directory_uri() ?>/img/example.jpg" alt="example">
</div>
<?php
get_footer();
# Подсчет количества посещений страницы
function set_postviews() {
$count_key = 'post_views_count'; // Имя поля для записи количества просмотров
$who_count = 1; // 0 - считать всех, 1 - только гостей, 2 - только зарегистрированных пользователей
$exclude_bots = 1; // 0 - считать всех, 1 - исключить из подсчета ботов
global $user_ID, $post, $cookie_test;
# Проверка, что не было просмотра страницы в течение часа
if( is_singular() && $cookie_test) {
$id = (int)$post->ID;
static $post_views = false;
if( $post_views ) return true; // чтобы 1 раз за поток
$post_views = (int)get_post_meta( $id, $count_key, true );
# Проверка пользователя: гость или зарегистрирован
$should_count = false;
switch( (int)$who_count ) {
case 0: $should_count = true;
break;
case 1:
if( (int)$user_ID == 0 )
$should_count = true;
break;
case 2:
if( (int)$user_ID > 0 )
$should_count = true;
break;
}
# Проверка на браузер или не бот, иначе false
if( (int)$exclude_bots == 1 && $should_count ){
$useragent = $_SERVER['HTTP_USER_AGENT'];
$notbot = "Mozilla|Opera"; //Chrome|Safari|Firefox|Netscape - все равны Mozilla
$bot = "Bot/|robot|Slurp/|yahoo"; //Яндекс иногда как Mozilla представляется
if ( !preg_match("/$notbot/i", $useragent ) || preg_match( "!$bot!i", $useragent ) )
$should_count = false;
}
# Обновляем счетик, если поля нет, то создаем со значением 1
if( $should_count )
if( !update_post_meta( $id, $count_key, ($post_views+1)) ) add_post_meta( $id, $count_key, 1, true );
}
return true;
}
add_action('wp_head', 'set_postviews');
/*
* Создаем куки, чтобы дважды не считать один и тот же пост в течение 1 часа
*
* в самое начало single.php пропишем:
* <?php
* global $cookie_test;
* $cookie_test = false;
*
* # Определяем имя файла (поста)
* $url = parse_url($_SERVER['REQUEST_URI']);
* $path = pathinfo($url['path']);
* $basename = $path['basename'];
*
* if( $basename && !isset($_COOKIE[$basename]) ) {
* $cookie_test = true;
* setcookie( $basename, '1', time()+3600 );
* }
* ?>
**/
/wp-login.php?action=lostpassword
, а не wp-admin.