@I_want_to_know

Как исправить ошибку Array to string conversion в wordpress?

Всем привет, уважаемые знатоки!
Обнаружилась у меня ошибка "Array to string conversion"
wp-content/themes/theme/template-parts/content-cards.php:52
load_template('wp-content/themes/theme/template-parts/content-cards.php')
wp-includes/template.php:725
locate_template()
wp-includes/general-template.php:206
get_template_part('template-parts/content','cards')
wp-content/themes/theme/template-home.php:364

Не понимаю, от куда она вообще берется.
Шаблон template-home.php, следующий код:
<section class="contest__old section">
    <div class="row">
      <div class="contest__heading heading heading__old">
        <h2 class="contest__title heading__title"></h2>
        <p class="heading__subtitle">
          <br>
          <span></span>

        </p>
      </div>
    </div>
    <div class="rotate-block rotate-block__old">
      <?php
      $args = array(
        'post_type' => 'cards', 
        'meta_type' => 'DATETIME',
        'meta_query' => array(
          array(
            'key' => 'data_cont', 
            'value' => date('Y-m-d'),
            'compare' => '<',
            'type' => 'DATETIME'
          )
        ),
        'posts_per_page' => 4,
        'orderby' => 'meta_value_num',
        'meta_key' => 'data_cont',
        'order' => 'DESC'
      );
      $query = new WP_Query($args);

      if ($query->have_posts()) :
        while ($query->have_posts()) : $query->the_post();
          get_template_part('template-parts/content', 'cards');
        endwhile;
        wp_reset_postdata();
      else :
        echo '<p>Нет записей для отображения</p>';
      endif;
      ?>
    </div>
    </div>
    <div class="all__contest">
      <a href="" class="btn btn-cart">кнопка</a>
    </div>


    </div>
  </section>

На самой строке 364, запрос к шаблону: get_template_part('template-parts/content', 'cards');
Содержимое шаблона content-cards.php тоже прилагаю:
<?php 
$photo = get_field('foto');
$dkVideo = get_field('dk_video');

$buttonOne = get_field('button_one_text_contest');
$buttontwo = get_field('button_tow_text_contest');

?>


<div class="change-img">
	<div class="front-side-img">
		<img src="<?php the_field('Sity_contest_massage'); ?>" alt="" class="icon__massage">
		<img src="<?php the_field('image_contest'); ?>" alt="<?php the_field('alt_img_contest'); ?>">
		<img src="<?php the_field('image_logotip_konkursa'); ?>" alt="" class="logo__front">
		<div class="sity__name">
			<h2 class="front-sity__name"><?php the_field('Sity_contest'); ?></h2>
			<span class="front-side__span"><?php the_field('data_cont_front'); ?></span>
		</div>


	</div>

	<div class="back-side-img">

		<div class="back-side__info">
			<h3 class="back-side__title">
				<a href="<?php the_permalink() ?>" class="judgeall__link">
					г.
					<span class="back-side__span"><?php the_field('Sity_contest'); ?></span>
				</a>
			</h3>
			<span class="back-side back-side__text back-side__aderss">адрес:
				<span class="back-side__span"><?php the_field('Adres_contest'); ?></span>
			</span>

			<span class="back-side back-side__data">дата:
				<span class=" back-sideback-side__span"><?php the_field('data_cont'); ?></span>
			</span>
			<span class="back-side back-side__prise"> стоимость участия от:
				<span class="back-side__span"><?php the_field('prise_contest'); ?>руб.</span>

			</span>


			<?php if (!empty($dkVideo) || !empty($photo)) : ?>
				<?php if ($photo) : ?>
				<a class="btn btn-cart" target="_blank" href="<?php echo $photo['url']; ?>"  ><?php echo $photo['title']; ?></a>
				<?php endif; ?>
				
				<?php if ($dkVideo) : ?>
				<a class="btn btn-cart" target="_blank" href="<?php echo ['url']; ?>"  ><?php echo $dkVideo['title']; ?></a>
				<?php endif; ?>
				
				
				<?php else : ?>
				<?php if (get_field('polozhenie')) : ?>

					<a target="_blank" class="btn btn-cart" href="<?php the_field('polozhenie'); ?>"><?php the_field('nazvanie_polozheniya'); ?></a>

				<?php endif; ?>


				<?php if ($buttonOne) : ?>
					<a href="<?php the_field('button_one_contest'); ?>" target="_blank" class="btn btn-cart"><?php the_field('button_one_text_contest'); ?></a>
				<?php endif; ?>

				<?php if ($buttontwo) : ?>
					<a href="<?php the_field('button_tow_contest'); ?>" target="_blank" class="btn btn-cart"><?php the_field('button_tow_text_contest'); ?></a>
				<?php endif; ?>
			<?php endif; ?>


		</div>
	</div>

</div>


На 52-й строке следующий код:
<a class="btn btn-cart" target="_blank" href="<?php echo ['url']; ?>"  ><?php echo $dkVideo['title']; ?></a>

Что касается переменных, то в них попадает содержимое кастомных полей из ACF
Подскажите, куда копать, где что править, что бы от этой ошибки избавиться.
Хотя эта не совсем ошибка, а предупреждение.
Пока сайт крутился на php8 ошибка выводилась на фронт.
Сменил на php7.4 на фронт не выводится, но через Query Monitor это предупреждение определяется.
Но фишка этого предупреждения в том, что проявляется в каком то рандомном порядке.
Может кто сталкивался с подобной "головной болью", посоветуйте, как исправить.
Спасибо.
  • Вопрос задан
  • 182 просмотра
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
echo ['url'];
echo ожидает строку, а у вас в передаётся массив.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы