Все шорткоды не работают в пользовательской теме

1 февр. 2013 г., 17:25:19
Просмотры: 26.7K
Голосов: 6

Я использую пользовательскую тему, разработанную не мной, которая, похоже, отключила или не имеет функции для всех шорткодов, будь то шорткоды WordPress или шорткоды плагинов. Мне в основном нужно, чтобы эта функция работала через шорткоды, генерируемые плагином. Я проверил несколько вещей, чтобы понять, что вызывает проблему, но не смог найти причину. Вот что я проверил.

Когда я переключился обратно на тему 2012, шорткоды работали нормально.

Я отключил все остальные плагины, чтобы проверить, не связано ли это с какой-либо несовместимостью. Изменений нет.

Я убедился, что шаблон страницы имеет правильный цикл согласно этому посту: шорткоды плагинов не работают в пользовательской теме - не знаю как исправить

*Редактирование: Вот код шаблона страницы

    <?php get_header(); ?>
<div id="main">
<div class="layout">

    <div id="content">
    <aside id="block_menu_like_division">
        <section>
            <h1 id="title_like_division"></h1>
            <nav id="nav_like_division">

            </nav>
        </section>
    </aside>
      <section>
        <article> 
          <?php // пока ( have_posts() ) : the_post(); 
            if(get_the_content()){
          ?>

            <?php if(get_the_ID() == 1228) { ?>
                <h1>Формы</h1>
                <?php the_content(); ?>
            <?php }elseif(get_the_ID() == 1191){ ?>
               <!-- <h5>&nbsp</h5> -->
                <?php the_content(); ?>
            <?php }else{ ?>

                <h1><?php the_title(); ?></h1>
        <?php
                    function sup($text){

                        $true = preg_replace('#(\d+)(st|th|nd|rd)#', '$1<sup class="super">$2</sup>', $text);
                        return $true;

                    }
                echo sup(get_the_content()); ?>
            <?php } ?>
            <?php }else{
                $arg = query_posts(array('post_parent' => get_the_ID(), 'post_type' => 'page', 'posts_per_page'=>1,  'orderby' => 'menu_order', 'order' => 'ASC' ));

//                    $arg[0]->guid;
                ?>
                <?php if($arg[0]->ID == 1811):?>
                <?php
                $ag = query_posts(array('post_parent' => $arg[0]->ID, 'post_type' => 'page','posts_per_page'=>1,  'orderby' => 'menu_order',  'order' => 'ASC' ));
                ?>
                <h1><?php echo $ag[0]->post_title; ?></h1>
                <?php echo $ag[0]->post_content; ?>
                <?php else:?>
                <h1><?php echo $arg[0]->post_title; ?></h1>
                <?php echo $arg[0]->post_content; ?>
                <?php endif;?>
                <?php }?>
          <?php // endwhile; // конец цикла. ?>
        </article>
      </section>
    </div>
    <aside>
        <?php include('quick_links.php'); ?>



        <?php
        $url = $_SERVER['REQUEST_URI'];
        $url_parse = parse_url($url);
        $level = explode('/', $url_parse['path']);


        if($level[1] == 'education' || $level[1] == 'fellowship'):?>
        <?php
        $catid = get_query_var('cat');
            $s = query_posts( array(
                'post_type' => 'post',
                'post_status' => 'publish',
                'category' => 'news',
                'posts_per_page' => 0, 
                'orderby' => 'post_date',
                'order' => 'DESC'));
        while( have_posts() ) : the_post();
            $newsList[] = array(
                'title' => get_the_title(),
                'link' => apply_filters('the_permalink', get_permalink()),
                'date' => apply_filters('the_time', get_the_time( 'F j, Y' ), 'F j, Y'),
                'expert' => apply_filters('the_excerpt', get_the_excerpt()),
                'author' => get_the_author(),
                );
        endwhile;
        wp_reset_query();


        ?>
        <section>
            <h2>Новости и информация</h2>
                <div id="asideNews" class="itemsList">
            <div class="listItem">
                <article>
                    <header>
                        <h3><a href="<?php echo $newsList[0]['link']; ?>"><?php echo $newsList[0]['title']; ?></a></h3>
                    </header>
                    <p><?php echo $newsList[0]['expert']; ?></p>
                    <div class="readmore"><a href="<?php echo $newsList[0]['link']; ?>">Читать далее</a></div>
                </article>
            </div>
        </div>


            </section>

        <?php else:?>
        <?php

            include('testimonials.php');

            ?>
      <?php endif;?>

    </aside>
</div>

</div>
<?php get_footer(); ?>

Есть вероятность, что первоначальный разработчик просто повторно использовал тему, разработанную для более старой версии WordPress, когда шорткоды еще не существовали.

Есть идеи, где искать дальше?

8
Комментарии

Пожалуйста, опубликуйте код вашего Loop.

s_ha_dum s_ha_dum
1 февр. 2013 г. 17:27:00

Код добавлен выше

NTL0820 NTL0820
1 февр. 2013 г. 18:32:29

Проверьте ваш functions.php или другие подключаемые файлы на наличие фильтров для the_content, например add_filter('the_content', 'strip_shortcodes');

Rob Vermeer Rob Vermeer
1 февр. 2013 г. 18:42:12

Были фильтры, но не относящиеся к шорткодам. Более того, я выполнил поиск по "shortcodes" и "shortcode" в файле functions.php и получил 0 результатов.

NTL0820 NTL0820
1 февр. 2013 г. 18:45:24

Я бы выполнил поиск по the_content и посмотрел, какие там есть фильтры.

Rob Vermeer Rob Vermeer
1 февр. 2013 г. 18:46:14

Нет результатов. Весь файл functions.php можно посмотреть здесь: http://pastie.org/6014295

NTL0820 NTL0820
1 февр. 2013 г. 18:51:41

Используйте функцию, которую видите здесь: http://goo.gl/3IIRY, чтобы увидеть, какие фильтры есть для the_content.

Rob Vermeer Rob Vermeer
1 февр. 2013 г. 22:01:25

К сожалению, не думаю, что это решение. Может ли проблема быть в другом файле, кроме functions.php?

NTL0820 NTL0820
6 февр. 2013 г. 19:59:27
Показать остальные 3 комментариев
Все ответы на вопрос 2
0

Итак, я наконец-то нашел решение!!! После многих недель поисков и проб различных вариантов, оказалось, что нужно просто убрать "get_" из ссылки на "the_content" в моем файле page.php. Я изменил это:

<?php
                    function sup($text){

                        $true = preg_replace('#(\d+)(st|th|nd|rd)#', '$1<sup class="super">$2</sup>', $text);
                        return $true;

                    }
                echo sup(get_the_content()); ?>

На это:

<?php
                    function sup($text){

                        $true = preg_replace('#(\d+)(st|th|nd|rd)#', '$1<sup class="super">$2</sup>', $text);
                        return $true;

                    }
                echo sup(the_content()); ?>

Пока что никаких проблем не возникло, и все шорткоды теперь работают. Спасибо всем, кто поделился своими идеями — без этого я бы не знал, где и что искать.

13 мар. 2013 г. 22:07:10
1

Ваш цикл (Loop) выполнен правильно. Он использует 'the_content' (как и должно быть), что должно запускать фильтры the_content, и ваши шорткоды должны обрабатываться так же, как и в других темах, которые вы пробовали.

Я прихожу к выводу, что ваша тема либо удаляет фильтры, либо шорткоды. Поищите в файлах вашей темы что-то вроде remove_filter( 'the_content',. Также проверьте наличие add_filter('the_content',. Затем поищите remove_shortcode и посмотрите, что именно удаляется.

Возможно, тема добавляет фильтр, который ломает шорткоды, но я бы поставил на один из первых двух вариантов.

1 февр. 2013 г. 18:43:59
Комментарии

Проверил все эти варианты, но результатов нет. Нет добавления или удаления фильтров для the_content или remove_shortcode.

NTL0820 NTL0820
1 февр. 2013 г. 18:55:09