web-dev-qa-db-ja.com

ショートコードで複数行を返すにはどうすればいいですか?

私はインターネット上でこのショートコードの例を見つけました:

function project_shortcode( $atts, $content = null ) {
    extract( shortcode_atts( array(
        'class' => '',
        'id' => '',
        ), $atts ) );

        return '<div id="' . $id . '" class="' . $class . '">' . $content . '</div>';

}
add_shortcode('button', 'project_shortcode');

これは私が欲しい出力です:

<div class="container item">
    <div class="row">
        <div class="intro twelvecol">
            <div class="top-border"></div>
        </div>
        <div class="screenshot eightcol">
            <img src="<?php bloginfo( 'template_url' ); ?>/images/studyatbest.png">
        </div>
        <div class="screenshot fourcol last">
            <h3>BEST LANGUAGE CENTER</h3>
            <p>BEST Language Center is an educational establishment in Taichung, Taiwan. I was asked to build and design a website they could use to offer classes, programs and display photos online.</p>
            <ul>
                <li>
                    <h4>ROLE</h4>
                    <p>Design, HTML/CSS, JavaScript</p>
                <li>
                    <h4>YEAR</h4>
                    <p>2010</p>
                </li>
                <li>
                    <h4>WEBSITE</h4>
                    <p><a href="http://studyatbest.com/">studyatbest.com</a></p>
                </li>
            </ul>
        </div>
    </div>
</div>

しかし、コードをきれいに保つために、ショートコードで複数の行を返すことができるようにするにはどうすればよいかわかりません。助言がありますか?

2
janoChen

出力バッファリングを使用しないでください。遅すぎてデバッグが難しいことがあります。 heredoc を使用してください。

例:

$output = <<<MYUNIQUENAME
    <div>$foo
      <p>Some $bar</p>
    </div>
MYUNIQUENAME;
1
fuxia

とった:

// Project shortcode
function project_shortcode( $atts, $content = null ) {
    extract( shortcode_atts( array(
        'client' => '',
        'screenshot' => '',
        'role' => '',
        'year' => '',
        'website' => '',
        ), $atts ) );

        ob_start();
    ?>

    <div class="container item">
        <div class="row">
            <div class="intro twelvecol">
                <div class="top-border"></div>
            </div>
            <div class="screenshot eightcol">
                <img src="<?php bloginfo( 'template_url' ); ?>/images/<?php echo $screenshot ?>">
            </div>
            <div class="screenshot fourcol last">
                <h3><?php echo $client ?></h3>
                <p><?php echo $content ?></p>
                <ul>
                    <li>
                        <h4>ROLE</h4>
                        <p><?php echo $role ?></p>
                    <li>
                        <h4>YEAR</h4>
                        <p><?php echo $year ?></p>
                    </li>
                    <li>
                        <h4>WEBSITE</h4>
                        <p><a href="http://<?php echo $website ?>"><?php echo $website ?></a></p>
                    </li>
                </ul>
            </div>
        </div>
    </div>

    <?php
        return ob_get_clean();
}
add_shortcode('project', 'project_shortcode');

(そのコードに悪い習慣があるかどうか教えてください)。

2
janoChen