• Как правильно оформить файл php для обработки формы?

    @inna97 Автор вопроса
    Sergey, я поспешила и вставила не ваш код, а свой прежний... Взгляд уже замылился и не увидела разницу. Потом вставила именно ваш код и просто через php все работает. А вот при отправки письма по прежнему выдает ошибку 500.
  • Как правильно оформить файл php для обработки формы?

    @inna97 Автор вопроса
    Выдает синтаксическую ошибку на if в переменной...
    syntax error, unexpected 'if' (T_IF)
  • Как правильно оформить файл php для обработки формы?

    @inna97 Автор вопроса
    NedoKoder, у меня немного другой код. Нет повторяющихся кусков $message .= и ; ...
    Этот код я писала сама. Или вы уже что-то поправили?
  • Как правильно отсортировать записи таксономии в файле archive.php?

    @inna97 Автор вопроса
    Ошибку я нашла - не стояла запятая на предыдущей строке.
    После этого стала выдавать ошибку в цикле. И вообще ничего не выдает.

    А идея отдавания по 10 постов меня и смущает. Получается сортировка идет каждого 10-ка. А мне нужно отсортировать сперва весь массив записей, а потом их отдавать по-странично.

    А примеры в рекомендуемой вами инфе непонятно для какой ситуации применимые. Какую структуру вывода данных потом применять? Потому что WP_Query обычно не используется в файлах типа archive-catalog.php.
  • Как правильно отсортировать записи таксономии в файле archive.php?

    @inna97 Автор вопроса
    Спасибо за ответ, но к сожалению не работает.
    Выдает ошибку на строке 'paged' => 2.
    И я не поняла логики - зачем устанавливать номер страницы?
  • Что сделать, если при пагинации в WP вместо 2 страницы выдается 404?

    @inna97 Автор вопроса
    Вот полный код страницы вывода карточек каталога.
    С выводом все ОК. С пагинацией нет.

    <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 );
    }


    Здесь нет ошибок.
    Но при все при этом - я еще не могу вывести категории в хлебные крошки и сделать с ними фильтр. Может это все взаимосвязано?
  • Что сделать, если при пагинации в WP вместо 2 страницы выдается 404?

    @inna97 Автор вопроса
    нет. там все нормально. Основной код работает. Не работает пагинация.
  • Что сделать, если при пагинации в WP вместо 2 страницы выдается 404?

    @inna97 Автор вопроса
    Это просто надо поднять на строку выше, где коммент //.
  • Что сделать, если при пагинации в WP вместо 2 страницы выдается 404?

    @inna97 Автор вопроса
    Возможно лишняя - я убирала остальной код вывода карточки. Так то все нормально выводится...
  • Что сделать, если при пагинации в WP вместо 2 страницы выдается 404?

    @inna97 Автор вопроса
    http://localhost/mlm/catalog/пищеварительная/стома...

    В настройках у меня стоит ссылка по дате.

    В funstions.php вот так стоит в настройках ссылки по категории Каталога - catalog

    'rewrite' => array( 'slug'=>'catalog/%catalogprod%', 'with_front'=>false, 'pages'=>false, 'feeds'=>false, 'feed'=>false ),
  • Что сделать, если при пагинации в WP вместо 2 страницы выдается 404?

    @inna97 Автор вопроса
    Ссылка на 2 страницу выглядит вот так localhost/mlm/catalog/page/2

    И что такое "где-то твой GET не принимается." я не понимаю. Можно конкретнее, пожалуйста?
  • Как ajax получить отрицательный ответ от php при отправке формы?

    @inna97 Автор вопроса
    Мама дорогая!!! Я в том то коде разбиралась несколько дней, а теперь все переделывать?
    В этом примере почти ничего не понимаю.
    А где проверка на размер файлов?

    Посмотрела статью про FormData - сумрак...

    Дмитрий, спасибо вам за терпение и желание помочь.
    Сегодня я уже не в состоянии больше ничего понимать.
  • Как ajax получить отрицательный ответ от php при отправке формы?

    @inna97 Автор вопроса
    Да, вот я и увидела этот косяк. При отправке через ajax файлы не прикрепляются к письму. Хотя письмо с текстом приходит.
    До этого не проверяла на реальном сервере ajax.

    Да, что с этим делать?

    Это вообще возможно, отправить файлы через ajax?

    А что означают предупреждения на картинке, которое плохо? Я не понимаю этого..
  • Как ajax получить отрицательный ответ от php при отправке формы?

    @inna97 Автор вопроса
    Скажите, как получить значение переменной $filesizeall (считает размер) в js.
    Я бы там сделала проверку.
  • Как ajax получить отрицательный ответ от php при отправке формы?

    @inna97 Автор вопроса
    Дмитрий, форма заработала, но ответ всегда приходит успешный.
    И в случае большого файла...
  • Как ajax получить отрицательный ответ от php при отправке формы?

    @inna97 Автор вопроса
    Покажу полный код с реального сайта
    <?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';
      }
    
    ?>


    Страница не реагирует, не выдает никакого сообщения, а вот письма на почту все равно уходят.
  • Как ajax получить отрицательный ответ от php при отправке формы?

    @inna97 Автор вопроса
    Убирала echo, все равно выдает эту ошибку.
    send.php самостоятельно работает правильно.
    И размер считает и на почту отправляет. И не отправляет если размер превышает.
    А вот в связке с ajax - увы...