Я пытаюсь заставить тему WordPress отображать выходные данные из шорткода плагина в выделенной области домашней страницы, которая в настоящее время, кажется, просто перетаскивает текстовые строки из настроек параметров.
Я адаптировал файл features.php следующим образом:
<?php global $option_setting;
$display_features = false;
$meta = get_post_meta( get_the_ID(), 'enable-features',true );
if (isset($option_setting['features-enable']['enabled'])) :
$enabled = $option_setting['features-enable']['enabled'];
if (((isset($enabled['blog']) ) && is_home() )
|| ((isset($enabled['staticpage'])) && is_front_page())
|| ((isset($enabled['posts'])) && is_single())
|| ((isset($enabled['archives'])) && is_archive())
|| ($meta)
|| ((isset($enabled['pages'])) && is_page()))
{
$display_features = true;
}
if ($display_features) :
if ( count($option_setting['features-main']) > 0 ) : ?>
<div id="features-area">
<div class="container">
<?php
$i = 0; foreach ( $option_setting['features-main'] as $features ) {
echo "<div class='col-md-4 col-sm-4 feature$i'><figure><div><a href='".esc_url($features['url'])."'><img src='".$features['image']."'><div class='features-caption'><div class='features-caption-title'>".$features['title']."</div>",($i==1 ? "<div class='features-caption-desc'><?php echo do_shortcode('[qemcalendar]'); ?></div></div></a></div></figure></div>" : "<div class='features-caption-desc'>".$features['description']."</div></div></a></div></figure></div>";
$i++; }
?>
</div>
</div><!--.features-->
<?php endif;
endif;
endif; ?>
Я получаю эту ошибку:
Parse error: syntax error, unexpected ';' in /home/pennybro/public_html/dev/wp-content/themes/pbcc/features.php on line 24
Строка 24 — это эхо, и я представляю, что я сделал с <?php echo do_shortcode('[qemcalendar]'); ?>
совершенно неправильно, но я пытаюсь понять, что мне нужно сделать вместо этого.
Я начал с if if, но так как это было внутри эха, это было не очень приятно. Я понимаю, что могу пытаться сделать что-то, что просто не сработает, но все мысли приветствуются!
Спасибо,
Лиза
У вас есть синтаксическая ошибка в вашем тексте:
Это действительно длинная очередь, это плохо. Использовать этот:
echo "<div class='col-md-4 col-sm-4 feature".$i."'>". "<figure>". "<div>". "<a href='".esc_url($features['url'])."'>". "<img src='".$features['image']."'>". "<div class='features-caption'>". "<div class='features-caption-title'>".$features['title']."</div>";
if ($i==1) { echo "<div class='features-caption-desc'>" . do_shortcode('[qemcalendar]')
. "</div>". "</div>". "</a>". "</div>". "</figure>". "</div>";
} else {
"<div class='features-caption-desc'>".$features['description']."</div></div></a></div></figure></div>";
}
Но я думаю, это более читабельно:
<div class='col-md-4 col-sm-4 feature<?php echo $i; ?>'>
<figure>
<div>
<a href='<?php echo esc_url($features['url']); ?>'>
<img src='<?php echo $features['image']; ?>'>
<div class='features-caption'>
<div class='features-caption-title'><?php echo $features['title']; ?></div>
<?php
if ($i == 1) {
?>
<div class='features-caption-desc'><?php do_shortcode('[qemcalendar]'); ?></div>
<?php
} else {
?>
<div class='features-caption-desc'><?php echo $features['description']; ?></div>
<?php
}
?>
</div>
</a>
</div>
</figure>
</div>
Я думаю, что ваша проблема — двойное эхо.
Вы повторяете троичное выражение (из-за того, что используете запятую), но вы повторяете это
<?php echo do_shortcode('[qemcalendar]'); ?>
Я думаю
. do_shortcode('[qemcalendar]') .
или быть последовательным:
, do_shortcode('[qemcalendar]'),
будет достаточно.