显示在div外部的快捷代码

时间:2018-07-05 作者:yourenotthere

我创建了一个按预期显示结果的短代码,但它位于div或table单元格之外,我将短代码放置在我的站点中。是否有一种更简洁的方法来编写此代码,从而在预期的位置生成代码?

<?php
function minisocialvar( $atts )
{
  $s = shortcode_atts( array(
        \'id\' => \'\',
        \'fb\' => \'\',
        \'tw\' => \'\',
        \'ig\' => \'\',
        \'yt\' => \'\',
        \'in\' => \'\',
        \'fk\' => \'\',
        \'align\' => \'left\',
        \'size\' => \'\',
    ), $atts ); ?>  

  <div id="<?php echo $s[\'id\']; ?>" style="text-align: <?php echo $s[\'align\']; ?>;">
    <?php if (!empty($s[\'fb\'])) { ?>
        <a href="<?php echo $s[\'fb\']; ?>" title="Follow Us On Facebook" target="_blank" class="fb-socialicon">
            <span class="fa-stack <?php echo $s[\'size\']; ?>">
                <i class="fa fa-circle fa-stack-2x"></i>
                <i class="fa fa-facebook fa-stack-1x fa-inverse"></i>
            </span>
        </a>
     <?php } ?>
     <?php if (!empty($s[\'tw\'])) { ?>
        <a href="<?php echo $s[\'tw\']; ?>" title="Follow Us On Twitter" target="_blank" class="tw-socialicon">
            <span class="fa-stack <?php echo $s[\'size\']; ?>">
                <i class="fa fa-circle fa-stack-2x"></i>
                <i class="fa fa-twitter fa-stack-1x fa-inverse"></i>
            </span>
        </a>
     <?php } ?>
     <?php if (!empty($s[\'ig\'])) { ?>
         <a href="<?php echo $s[\'ig\']; ?>" title="Follow Us On Instagram" target="_blank" class="ig-socialicon">
             <span class="fa-stack <?php echo $s[\'size\']; ?>">
                 <i class="fa fa-circle fa-stack-2x"></i>
                 <i class="fa fa-instagram fa-stack-1x fa-inverse"></i>
             </span>
         </a>
     <?php } ?>
     <?php if (!empty($s[\'yt\'])) { ?>
         <a href="<?php echo $s[\'yt\']; ?>" title="Watch Us On YouTube" target="_blank" class="yt-socialicon">
              <span class="fa-stack <?php echo $s[\'size\']; ?>">
                 <i class="fa fa-circle fa-stack-2x"></i>
                 <i class="fa fa-youtube fa-stack-1x fa-inverse"></i>
              </span>
         </a>
     <?php } ?> 
     <?php if (!empty($s[\'in\'])) { ?>
         <a href="<?php echo $s[\'in\']; ?>" title="Join Us On LinkedIn" target="_blank" class="in-socialicon">
            <span class="fa-stack <?php echo $s[\'size\']; ?>">
                <i class="fa fa-circle fa-stack-2x"></i>
                <i class="fa fa-linkedin fa-stack-1x fa-inverse"></i>
            </span>
         </a>
     <?php } ?>
     <?php if (!empty($s[\'fk\'])) { ?>
         <a href="<?php echo $s[\'fk\']; ?>" title="View Us On Flickr" target="_blank" class="fk-socialicon">
            <span class="fa-stack <?php echo $s[\'size\']; ?>">
                <i class="fa fa-circle fa-stack-2x"></i>
                <i class="fa fa-flickr fa-stack-1x fa-inverse"></i>
            </span>
         </a>
     <?php } ?>
 </div>
<?php } ?>

<?php add_shortcode( \'minisocial\', \'minisocialvar\' );

1 个回复
最合适的回答,由SO网友:D. Dan 整理而成

您可以将所有html放在一个变量中并返回它

$r = "<div id=\\"" . $s[\'id\'] . "\\"..."; 
if (!empty($s[\'fb\'])) {
$r .= "<a href=\\" . $s[\'fb\'] . "...";
}
$r .= "title=\\"Follow Us On Facebook\\" ";
$r .= "target=\\"_blank\\" ";  
return $r;
但是你网站上的每个短代码都应该做到这一点,以便它们以正确的顺序出现。一旦有人开始回应,就会扰乱秩序。

结束

相关推荐

Namespaced shortcode?

我正在改造一个旧的WP站点,该站点有许多自定义的短代码,显然由于代码当前的组织方式,这些短代码在性能方面付出了代价。当然,我可以修复优化不好的代码,使用十几个短代码,并且一天就可以完成,但我想知道如何更好地组织它们。根据WordPress\'documentation, 建议将它们放在插件中并在上初始化init. 我们可以通过这样“命名”它们来减少这个钩子中的负载吗?[com.company shortcode attr=\"attr\" prop=\"prop\"] 有人尝试过这样的解决方案吗