В течение некоторого времени я создавал собственные шорткоды, чтобы помочь отображать различную информацию на моем сайте Wordpress, без необходимости создания пользовательских шаблонов страниц / постов, и это прекрасно работает.
Недавно я также внедрил плагин Advanced Custom Fields, в отличие от мотыги. Я изначально добавлял метабоксы в пользовательские типы постов, и это улучшило способ разработки сайта.
Когда Создавая собственный шаблон сообщения, я могу использовать что-то вроде этого для отображения информации:
<?php if(get_field('email_address'))
{ echo '<a href="mailto://' .get_field('email_address') . '">EMAIL</a></div>'; }
?>
По сути, если у него есть информация, она будет отображаться иначе, ничего не делать. Где у меня есть вопрос, и я не могу понять, есть ли способ получить оператор if / get в деталях add_shortcode?
Ниже приведен шорткод, в котором перечислены каталоги церкви и ее детали, но в некоторых случаях они не будут иметь всей информации. Это просто, когда это обычный текст, похожий на физический адрес, как если бы ничего не было доступно - ничего не отображается, поскольку перенос этой части текста не имеет CSS подобного заполнения.
Где я сталкиваюсь с такой проблемой, как электронная почта или веб-сайт. Даже если они не предоставляют ни одного из них, кодировка по-прежнему отображает текст «Электронная почта» или «Веб-сайт», но, очевидно, без ссылки. В идеале - этот текст не будет отображаться вообще.
Так что можно иметь оператор if / get с кодировкой add_shortcode, чтобы это произошло?
Вот код, который я сейчас использую. Заранее спасибо за любую помощь и совет ..
add_shortcode( 'directory' , 'Directory' );
function Directory($atts) {
$atts = shortcode_atts( array(
'category' => ''
), $atts );
$categories = explode(',' , $atts['category']);
$args = array(
'post_type' => 'church-directory',
'post_status' => 'publish',
'orderby' => 'title',
'order' => 'ASC',
'posts_per_page'=> -1,
'tax_query' => array( array(
'taxonomy' => 'category',
'field' => 'term_id',
'operator' => 'AND',
'terms' => $categories
) )
);
$string = '';
$string .= '<div style="margin-top: -30px;">';
$query = new WP_Query( $args );
if( ! $query->have_posts() ) {
return false;
}
while( $query->have_posts() ){
$query->the_post();
$string .= '<div id="directoryWrapper">';
$string .= '<div><h1><a style="text-transform: uppercase;" href="' .get_field('custom_url') . '">' . get_the_title() . '</a></h1></div>';
$string .= '<div>' .get_field('address') . '</div><div style="clear: both;"></div>';
$string .= '<div>' .get_field('phone_number') . ' ';
$string .= '<a href="mailto://' .get_field('email_address') . '">EMAIL</a> ';
$string .= '<a href="' .get_field('custom_url') . '">WEBSITE</a></div><div style="clear: both;"></div>';
$string .= '</div>';
}
$string .= '</div>';
wp_reset_postdata();
return $string;
}