0

「WPPrivate」プラグインを投稿/ページではなく、TEMPLATEで機能させるのに問題があります。Googleを検索するとき、SINGLEショートコードの実装方法を見つけるのに問題はありませんが、非常に一般的であることがわかっている開始/終了ショートタグの実装方法を見つけることができません。

これが私のコードです。私は別の構文の問題を抱えているに違いありません!この場合に使用した開始/終了タグは、私が試した別のWebサイトで成功したことが証明されています。ただし、この場合は機能しません。

<?php echo do_shortcode ('[protected]
                <!--<h2><?php the_title(); ?></h2>-->

                <ul style="border-bottom: 1px solid #d8d8d8" class="<?php echo  get_option('minimax_list_layout'); ?>">                                         
                <?php 
                    query_posts(array ('post__in' => array( 569))); 

                                    if (have_posts()) : while (have_posts()) : the_post(); 
                ?>

                    <li style="border-bottom: 1px solid #d8d8d8; padding-bottom:20px" class="clearfix">                     
                    <?php if ( get_option('minimax_list_layout') == 'style-two' ) { ?>

                        <h3 style="font-family:nobile; font-weight:normal; font-size:1.8em"><a style="text-decoration:none" title="<?php the_title(); ?>" href="<?php the_permalink() ?>"><?php the_title(); ?></a></h3>
                        <cite><?php the_time('d M Y') ?> </cite>
                        <?php if ( has_post_thumbnail() ) { ?>
                        <a title="Permanent Link to <?php the_title(); ?>" href="<?php the_permalink() ?>"><?php the_post_thumbnail('thumb_post_wide', 'class=head'); ?></a>
                        <?php } ?>

                        <p style="font-family:nobile; font-size:1.15em"><?php echo ShortenText( $post->post_content, 300 ); ?></p>
                        <a class="detail" href="<?php the_permalink() ?>">Continue reading</a>

                    <?php } else { ?>

                        <?php if ( has_post_thumbnail() ) { ?>
                        <a title="Permanent Link to <?php the_title(); ?>" href="<?php the_permalink() ?>"><?php the_post_thumbnail('thumb_post_1'); ?></a>
                        <?php } ?>

                                                                                            <div class="post-summary">
                            <h3 style="font-family:nobile; font-weight:normal; font-size:1.8em"><a style="text-decoration:none" title="<?php the_title(); ?>" href="<?php the_permalink() ?>"><?php the_title(); ?></a></h3>
                            <!--<cite style="font-style:normal; font-weight:bold; font-family:nobile"><?php the_time('d M Y') ?> </cite>-->
                            <p style="font-family:nobile; font-size:1.15em"><?php echo ShortenText( $post->post_content, 220 ); ?></p>
                            <a style="font-family:nobile" class="detail" href="<?php the_permalink() ?>">Continue reading</a>
                        </div><!-- end post-summary -->
                                            <?php } ?>
                                                                            </li>       


                <?php endwhile;  ?>

                <?php if (show_posts_nav()) : ?>
                <div id="post-navigation" class="clearfix">
                    <span class="previous"><?php next_posts_link('Older Entries') ?></span>
                    <span class="next"><?php previous_posts_link('Newer Entries') ?></span>
                </div>
                <?php endif; wp_reset_query(); ?>   

                <?php else: ?>
                    <p><?php _e('Sorry, no pages matched your criteria.'); ?></p>
                <?php endif; ?>
                </ul><!-- end posts-list -->
[/protected]') ?>
4

1 に答える 1

1

あなたはここで非常に奇妙なことを書いています。これを行うことによって:

echo do_shortcode ('[protected]
                <!--<h2><?php the_title(); ?></h2>-->

テンプレートのphpコードを文字列として関数に送信してからエコーしますが、PHPエンジンによって解釈されることはありません。さらに、最初の一重引用符は構文エラーを作成します。ob(出力バッファリング)を有効にし、テンプレートコードを実行し、バッファから結果を取得し、それをショートコードでラップしてから、結果を関数do_shortcodeに送信する必要があります。

http://www.php.net/ob_startおよび http://www.php.net/ob_get_clean

ps:そして私はまだあなたがそれを必要としないと思います。「if」ステートメントを使用してコードのセクション全体をスキップできるのに、なぜここにショートコードが必要なのですか?プラグインで何をしているのかわかりませんが、テンプレートの一部を非表示にしようとしている場合は、「if」がアイデアを実装する最も簡単な方法です。

if (check_if_allowed())
{
// your part of template is here
}
于 2012-01-25T00:38:26.757 に答える