你可以在短码中添加ifgetecho语句吗?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了你可以在短码中添加ifgetecho语句吗?相关的知识,希望对你有一定的参考价值。
一段时间以来,我一直在创建自定义快捷码来帮助显示我的Wordpress网站上的各种信息,而不需要创建自定义的页面帖子模板,而且它的效果非常好。
我最近也在实施高级自定义字段插件,相对于我原来在自定义帖子类型中添加元框,它改善了我开发网站的方式。
当创建自定义帖子模板时,我可以使用这样的东西来显示信息。
<?php if(get_field('email_address'))
{ echo '<a href="mailto://' .get_field('email_address') . '">EMAIL</a></div>'; }
?>
基本上,如果它有信息,就会显示,否则,什么都不做。我有我的问题,想不通的地方,有没有办法在add_shortcode详情里有一个if get语句?
下面是一个短码,它列出了一个目录下的教堂位置和它的细节,但在某些情况下,他们不会有所有的信息。当它只是像物理地址这样的普通文本时,这很容易,就像什么都没有一样--什么都没有显示,因为包装那部分文本没有像padding这样的CSS。
我遇到问题的地方是像电子邮件或网站这样的东西。即使他们没有提供这两样东西,编码仍然会显示 "电子邮件 "或 "网站 "的文本,但显然没有链接。理想的情况是--这个文本根本不会被显示。
因此,是否可以在add_shortcode编码中加入if get类型的语句来实现这个功能?
这是我目前使用的编码。预先感谢任何援助和建议。
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;
}
答案
所以,我想通了......这里是最终的代码,以防止它帮助别人想做类似的事情。
add_shortcode('directory', 'Directory');
function directory($atts){
$atts = shortcode_atts( array(
'category' => ''
), $atts );
$categories = explode(',' , $atts['category']);
$args = array(
'post_type' => '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
) )
);
ob_start();
$my_query = new WP_Query( $args );
if( $my_query->have_posts() ) {
?>
<?php
while ($my_query->have_posts()) : $my_query->the_post(); ?>
<div id="directoryWrapper">
<h1><a style="text-transform: uppercase; font-weight: 600;" href="' .get_field('custom_url') . '"><?php the_title(); ?></a></h1>
<?php if(get_field('address')) { echo '' . get_field('address') . ''; } ?>
<?php if(get_field('phone_number')) { echo '<br>' . get_field('phone_number') . ' '; } ?>
<?php if(get_field('email_address')) { echo '<a href="mailto://' .get_field('email_address') . '">EMAIL</a> '; } ?>
<?php if(get_field('custom_url')) { echo '<a href="' .get_field('custom_url') . '">WEBSITE</a>'; } ?>
<div style="clear: both;"></div>
</div>
<?php endwhile; ?>
<?php
}
wp_reset_query();//reset the global variable related to post loop
$retVal = ob_get_contents();
ob_end_clean();
return $retVal;
}
以上是关于你可以在短码中添加ifgetecho语句吗?的主要内容,如果未能解决你的问题,请参考以下文章