do_shortcodes в Wordpress - PullRequest
       12

do_shortcodes в Wordpress

0 голосов
/ 25 января 2012

У меня возникли проблемы с тем, чтобы мой плагин WP Private работал через мой ШАБЛОН, а не через пост / страницу.При поиске в Google у меня нет проблем с выяснением того, как реализовать ОДИН шорткод, но я не могу найти, как реализовать открывающий / закрывающий шорт-тег, который, как я знаю, встречается довольно часто.

Вотмой кодУ меня должна быть другая проблема синтаксиса!Открывающие / закрывающие теги, которые я использовал в этом случае, оказались успешными на другом веб-сайте, который я пробовал.Но это не работает в этом случае.

<?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]') ?>

1 Ответ

1 голос
/ 25 января 2012

Вы пишете очень странные вещи здесь. Делая это:

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 (check_if_allowed())
{
// your part of template is here
}
...