执行短码时传递的两个条件的短码PHP文件

时间:2019-09-15 作者:Ibrahim Hajjaj

我已经为PHP文件插件模板创建了一个快捷代码,现在该模板有两个HTML设计,一个显示图标,另一个只显示名称。

Is it possible to trigger a bool when do_shotecode for icons in functions.php and then in the template file I check for bool and say if do_shortcode has parameter icon set to true then echo content with icons?

<小时>

Paths for files I\'m working on

<功能。php:子主题/
  • 插件模板:子主题/文件夹名/plugin\\u模板。菲律宾语

    Basic code e.g

    <?php if(do_shortcode_bool_with_icons == true ) { ?>
    <h2>Print Items with Icons </h2>
    
    <ul>
        <li>Coffee</li>
    </ul>
    <?php } ?>
    
    
    <?php if(do_shortcode_bool_text_only == true ) { ?>
    
    <h2>Print Names only without icons</h2>
    
    <ol>
        <li>Coffee</li>
    </ol>
    <?php } ?>
    

  • 1 个回复
    最合适的回答,由SO网友:Antti Koskinen 整理而成

    这个do_shortcode() 函数采用两个参数,string $content, bool $ignore_html = false. 如果您可以在内容字符串传递给函数之前获取它,那么您可以strpos() 或者某种要检查的regex,shortocode字符串中存在哪些参数。但除此之外,我认为没有办法进行你在外部要求的那种有条件的检查do_shortcode().

    做同样事情的一种更简单、更明确的方法是在短代码回调中包含条件检查。然后,您可以使用默认值(例如true/false)来呈现图标,并将其与传递给快捷码的参数相匹配。

    例如,您的短代码是这样使用的,

    [your\\u shortcode icons=“true”]

    您的回拨结果如下所示,

    add_shortcode( \'your_shortcode\', \'your_shortcode_callback\' )
    function your_shortcode_callback( $atts ) {
    
      $default = array(
        \'icons\' => false,
      );
      $atts = shortcode_atts( $default, $atts, \'your_shortcode\' );
    
      if ( $atts[\'icons\'] ) {
    
        // return markup with icons
    
      } else {
    
        // return markup without icons
    
      }
    
    }
    

    相关推荐

    Shortcode to show the code

    如何创建一个短代码(或类似的代码)来在页面的某个地方显示页脚?我试过了,但没有结果。。。function show_footer() { return get_footer(); } add_shortcode( \'show_f\', \'show_footer\' ); 或者这个。。。function show_footer() { get_footer(); } add_shortcode( \'show_f\', \'sho