<div id="primary" class="content-area">
<main id="main" class="site-main">
<div class="catalog_screen">
<div class="container">
<?php if ( function_exists( 'dimox_breadcrumbs' ) ) dimox_breadcrumbs(); ?>
<div class="catalog">
<div class="catalog_rubric">
<?php
$categories = get_categories(array(
'taxonomy' => 'catalogprod',
'orderby' => 'name',
'order' => 'ASC',
'hide_empty' => '1',
'pad_counts' => true
));
foreach( $categories as $category ){
echo '<p class="catalog__category"><a data-toggle=".$category->name." href="#" ' . '>' . $category->name.'</a> </p> ';
// echo '<a href="' . get_category_link( $category->term_id ) . '" title="' . sprintf( __( "View all posts in %s" ), $category->name ) . '" ' . '>' . $category->name.'</a>';
}
?>
</div>
<div class="catalog_arhiv">
<?php
// задаем нужные нам критерии выборки данных из БД
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
// WP_Query arguments
$args = array (
'post_type' => array( 'catalog' ),
'post_status' => array( 'publish' ),
'posts_per_page' => '3',
'posts_per_archive_page' => '3',
'paged' => $paged
);
// $args = array(
// 'post_type' => 'catalog',
// 'posts_per_page' => -1,
// 'paged' => get_query_var('paged') ?: 1
// // 'orderby' => 'comment_count'
// );
$the_catalog = new WP_Query( $args );
// Цикл
if ( $the_catalog->have_posts() ) {
while ( $the_catalog->have_posts() ) {
$the_catalog->the_post();
?>
<div class="catalog__block">
<div class="catalog__img">
<?php echo get_the_post_thumbnail(get_the_ID()); ?>
</div>
<a href="<?php echo get_permalink(); ?>" target="_blank">
<div class="catalog__title">
<?php the_field('product_name'); ?>
</div>
</a>
<div class="catalog__property">
<?php the_field('primary_property'); ?>
</div>
<div class="catalog__price">
<?php the_field('price'); ?><span> Р</span>
</div>
<button class="button catalog__btn">
<a href="<?php echo get_permalink(); ?>" target="_blank">ПОДРОБНЕЕ</a>
</button>
</div>
<?php
} the_posts_pagination($args);
} else {
// Постов не найдено
}
// Возвращаем оригинальные данные поста. Сбрасываем $post.
wp_reset_postdata();
?>
</div>
</div>
</div>
</div>
</main><!-- #main -->
</div>
add_action( 'init', 'register_catalog_post_type' );
function register_catalog_post_type() {
// Раздел вопроса - faqcat
register_taxonomy('catalogprod', array('catalog'), array(
'label' => 'Раздел каталога', // определяется параметром $labels->name
'labels' => array(
'name' => 'Раздел каталога',
'singular_name' => 'Разделы каталога',
'search_items' => 'Искать Раздел каталога',
'all_items' => 'Все Разделы каталога',
'parent_item' => 'Родит. раздел каталога',
'parent_item_colon' => 'Родит. раздел каталога:',
'edit_item' => 'Ред. раздела каталога',
'update_item' => 'Обновить раздел каталога',
'add_new_item' => 'Добавить раздел каталога',
'new_item_name' => 'Новый раздел каталога',
'menu_name' => 'Разделы каталога',
),
'description' => 'Раздел каталога', // описание таксономии
'public' => true, // Показывать ли эту таксономию в интерфейсе админ-панели
'show_in_nav_menus' => false, // Показывать блок управления этой таксономией в админке
'show_ui' => true, // Показывать ли таксономию в админ-меню
'show_tagcloud' => false, // Создать виджет облако элементов этой таксономии (как облако меток)
'hierarchical' => true, // true - таксономия будет древовидная (как категории). false - будет не древовидная (как метки).
'rewrite' => array('slug'=>'catalog', 'hierarchical'=>false, 'with_front'=>false, 'feed'=>false ),
// ' with_front' - разрешает добавление постоянных ссылок к передней базе - по умолчанию true
// 'hierarchical' - true или false разрешить иерархические URL-адреса (реализовано в версии 3.1 ) - по умолчанию false
// 'feed' -
'show_admin_column' => true, // Позволить или нет авто-создание колонки таксономии в таблице ассоциированного типа записи. (с версии 3.5)
) );
// тип записи - вопросы - faq
register_post_type('catalog', array(
'label' => 'Товар',
'labels' => array(
'name' => 'Каталог',
'singular_name' => 'Товар',
'menu_name' => 'Каталог',
'all_items' => 'Все товары',
'add_new' => 'Добавить товар',
'add_new_item' => 'Добавить новый товар',
'edit' => 'Редактировать',
'edit_item' => 'Редактировать товар',
'new_item' => 'Новый товар',
),
'description' => '',
'public' => true,
'publicly_queryable' => true,
'show_ui' => true,
'show_in_rest' => false, // вид редактора
'rest_base' => '',
'show_in_menu' => true,
'exclude_from_search' => false,
'capability_type' => 'post',
'map_meta_cap' => true,
'hierarchical' => false,
'rewrite' => array( 'slug'=>'catalog/%catalogprod%', 'with_front'=>false, 'pages'=>false, 'feeds'=>false, 'feed'=>false ),
'has_archive' => 'catalog',
'query_var' => true,
'menu_position' => 6,
'supports' => array( 'title', 'editor', 'thumbnail' ),
'taxonomies' => array( 'catalogprod' ),
) );
}
## Отфильтруем ЧПУ произвольного типа
// фильтр: apply_filters( 'post_type_link', $post_link, $post, $leavename, $sample );
add_filter('post_type_link', 'catalog_permalink', 1, 2);
function catalog_permalink( $permalink, $post ){
// выходим если это не наш тип записи: без холдера %products%
if( strpos($permalink, '%catalogprod%') === false )
return $permalink;
// Получаем элементы таксы
$terms = get_the_terms($post, 'catalogprod');
// если есть элемент заменим холдер
if( ! is_wp_error($terms) && !empty($terms) && is_object($terms[0]) )
$term_slug = array_pop($terms)->slug;
// элемента нет, а должен быть...
else
$term_slug = 'no-catalogprod';
return str_replace('%catalogprod%', $term_slug, $permalink );
}
<?php
$name = $_POST['name'];
$family = $_POST['family'];
$phone = $_POST['phone'];
$date = date("Y-m-d H:i:s");
$name = htmlspecialchars($name);
$name = urldecode($name);
$name = trim($name);
$family = htmlspecialchars($family);
$family = urldecode($family);
$family = trim($family);
$phone = htmlspecialchars($phone);
$phone = urldecode($phone);
$phone = trim($phone);
$to = "inna97litvina@gmail.com";
$from = "test@litvinatest.ru";
$subject = "Заявка с сайта АЙРИС TAXI";
$message = "\nЗаявка на подключение водителя к сервису Яндекс.Такси: \n\n"
.$family." ".$name. "\n\nтелефон: ".$phone."\n\nНастоящим подтверждаю, что принял и присоединился к АГЕНТСКОМУ ДОГОВОРУ - ОФЕРТЕ от «25» января 2019 г., размещенному на сайте " .$_SERVER['HTTP_REFERER']. " Заключение настоящего Договора происходит в порядке, предусмотренном ст. 428 ГК РФ.\nАкцептом настоящей Оферты признаются следующие действия Принципала* в совокупности: регистрация на сайте " .$_SERVER['HTTP_REFERER'].", размещение Заявки на сайте, которая должна содержать всю информацию и документы, указанные в определении Заявки.\n*Принципал — физическое лицо или индивидуальный предприниматель, зарегистрировавшееся на Сайте, разместившее Заявку с помощью Сайта и принимающее условия настоящего Договора.\n\n".$date."\n\n".$_SERVER['HTTP_REFERER'];
$boundary = md5(date('r', time()));
$filesizeall = '';
$headers = "MIME-Version: 1.0\r\n";
$headers .= "From: " . $from . "\r\n";
$headers .= "Reply-To: " . $from . "\r\n";
$headers .= "Content-Type: multipart/mixed; boundary=\"$boundary\"\r\n";
$message="
Content-Type: multipart/mixed; boundary=\"$boundary\"
--$boundary
Content-Type: text/plain; charset=\"utf-8\"
Content-Transfer-Encoding: 7bit
$message";
if(is_uploaded_file($_FILES['file_prava1']['tmp_name'])) {
$attachment = chunk_split(base64_encode(file_get_contents($_FILES['file_prava1']['tmp_name'])));
$filename = $_FILES['file_prava1']['name'];
$filetype = $_FILES['file_prava1']['type'];
$filesize = $_FILES['file_prava1']['size'];
$filesizeall = $filesizeall + $filesize;
$message.="
--$boundary
Content-Type: \"$filetype\"; name=\"$filename\"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename=\"$filename\"
$attachment";
}
if(is_uploaded_file($_FILES['file_prava2']['tmp_name'])) {
$attachment = chunk_split(base64_encode(file_get_contents($_FILES['file_prava2']['tmp_name'])));
$filename = $_FILES['file_prava2']['name'];
$filetype = $_FILES['file_prava2']['type'];
$filesize = $_FILES['file_prava2']['size'];
$filesizeall = $filesizeall + $filesize;
$message.="
--$boundary
Content-Type: \"$filetype\"; name=\"$filename\"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename=\"$filename\"
$attachment";
}
if(is_uploaded_file($_FILES['file_ctc1']['tmp_name'])) {
$attachment = chunk_split(base64_encode(file_get_contents($_FILES['file_ctc1']['tmp_name'])));
$filename = $_FILES['file_ctc1']['name'];
$filetype = $_FILES['file_ctc1']['type'];
$filesize = $_FILES['file_ctc1']['size'];
$filesizeall = $filesizeall + $filesize;
$message.="
--$boundary
Content-Type: \"$filetype\"; name=\"$filename\"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename=\"$filename\"
$attachment";
}
if(is_uploaded_file($_FILES['file_ctc2']['tmp_name'])) {
$attachment = chunk_split(base64_encode(file_get_contents($_FILES['file_ctc2']['tmp_name'])));
$filename = $_FILES['file_ctc2']['name'];
$filetype = $_FILES['file_ctc2']['type'];
$filesize = $_FILES['file_ctc2']['size'];
$filesizeall = $filesizeall + $filesize;
$message.="
--$boundary
Content-Type: \"$filetype\"; name=\"$filename\"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename=\"$filename\"
$attachment";
}
if(is_uploaded_file($_FILES['file_lizen1']['tmp_name'])) {
$attachment = chunk_split(base64_encode(file_get_contents($_FILES['file_lizen1']['tmp_name'])));
$filename = $_FILES['file_lizen1']['name'];
$filetype = $_FILES['file_lizen1']['type'];
$filesize = $_FILES['file_lizen1']['size'];
$filesizeall = $filesizeall + $filesize;
$message.="
--$boundary
Content-Type: \"$filetype\"; name=\"$filename\"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename=\"$filename\"
$attachment";
}
if(is_uploaded_file($_FILES['file_lizen2']['tmp_name'])) {
$attachment = chunk_split(base64_encode(file_get_contents($_FILES['file_lizen2']['tmp_name'])));
$filename = $_FILES['file_lizen2']['name'];
$filetype = $_FILES['file_lizen2']['type'];
$filesize = $_FILES['file_lizen2']['size'];
$filesizeall = $filesizeall + $filesize;
$message.="
--$boundary
Content-Type: \"$filetype\"; name=\"$filename\"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename=\"$filename\"
$attachment";
}
if(is_uploaded_file($_FILES['file_pasp1']['tmp_name'])) {
$attachment = chunk_split(base64_encode(file_get_contents($_FILES['file_pasp1']['tmp_name'])));
$filename = $_FILES['file_pasp1']['name'];
$filetype = $_FILES['file_pasp1']['type'];
$filesize = $_FILES['file_pasp1']['size'];
$filesizeall = $filesizeall + $filesize;
$message.="
--$boundary
Content-Type: \"$filetype\"; name=\"$filename\"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename=\"$filename\"
$attachment";
}
if(is_uploaded_file($_FILES['file_pasp2']['tmp_name'])) {
$attachment = chunk_split(base64_encode(file_get_contents($_FILES['file_pasp2']['tmp_name'])));
$filename = $_FILES['file_pasp2']['name'];
$filetype = $_FILES['file_pasp2']['type'];
$filesize = $_FILES['file_pasp2']['size'];
$filesizeall = $filesizeall + $filesize;
$message.="
--$boundary
Content-Type: \"$filetype\"; name=\"$filename\"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename=\"$filename\"
$attachment";
}
if(is_uploaded_file($_FILES['file_kart']['tmp_name'])) {
$attachment = chunk_split(base64_encode(file_get_contents($_FILES['file_kart']['tmp_name'])));
$filename = $_FILES['file_kart']['name'];
$filetype = $_FILES['file_kart']['type'];
$filesize = $_FILES['file_kart']['size'];
$filesizeall = $filesizeall + $filesize;
$message.="
--$boundary
Content-Type: \"$filetype\"; name=\"$filename\"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename=\"$filename\"
$attachment";
}
$message.="
--$boundary--";
$answer = [];
if ($filesizeall < 10000000) { // проверка на общий размер всех файлов. Многие почтовые сервисы не принимают вложения больше 10 МБ
mail($to, $subject, $message, $headers);
$answer = ['type' => 'success', 'message' => 'Ваше сообщение отправлено, спасибо!'];
return json_encode($answer);
// echo 'Спасибо!';
} else {
$answer = ['type' => 'error', 'message' => 'Извините, письмо не отправлено. Размер всех файлов превышает 10 МБ.'];
return json_encode($answer);
// echo 'Размер файлов превышает 10MB';
}
?>