Shortcode-urile nu funcționează pe tema personalizată

1 feb. 2013, 17:25:19
Vizualizări: 26.7K
Voturi: 6

Folosesc o temă personalizată care nu a fost dezvoltată de mine și care pare să fi dezactivat sau nu are funcția pentru toate shortcode-urile, fie că sunt shortcode-uri WordPress sau shortcode-uri generate de plugin-uri. Am nevoie în special ca această funcționalitate să meargă pentru shortcode-urile generate de plugin-uri. Am verificat mai multe lucruri pentru a vedea ce cauzează problema, dar nu am avut noroc să găsesc sursa. Iată ce am verificat.

Când am revenit la tema 2012, shortcode-urile au funcționat corect.

Am dezactivat toate celelalte plugin-uri pentru a verifica dacă era din cauza vreunei incompatibilități. Nicio schimbare.

M-am asigurat că template-ul paginii are bucla corectă conform acestei postări: shortcode-urile plugin-urilor nu funcționează pe tema personalizată - nu știu cum să rezolv

*Editare: Aici este codul pentru template-ul paginii

<?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 // în timp ce ( have_posts() ) : the_post(); 
            if(get_the_content()){
          ?>

            <?php if(get_the_ID() == 1228) { ?>
                <h1>Formulare</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; // sfârșitul buclei. ?>
        </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>Știri & Informații</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']; ?>">Citește mai mult</a></div>
                </article>
            </div>
        </div>


            </section>

        <?php else:?>
        <?php

            include('testimonials.php');

            ?>
      <?php endif;?>

    </aside>
</div>

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

Există posibilitatea ca dezvoltatorul original să fi refolosit pur și simplu o temă dezvoltată pentru o versiune mai veche de WordPress, când shortcode-urile nu existau.

Aveți idei unde să mai caut?

8
Comentarii

Postează codul pentru Loop-ul tău, te rog.

s_ha_dum s_ha_dum
1 feb. 2013 17:27:00

Codul a fost adăugat mai sus

NTL0820 NTL0820
1 feb. 2013 18:32:29

Verifică în functions.php sau în alte fișiere incluse pentru filtre pe the_content, cum ar fi add_filter('the_content', 'strip_shortcodes');

Rob Vermeer Rob Vermeer
1 feb. 2013 18:42:12

Au existat filtre, dar niciunul nu se referea la shortcodes. Mai mult, am făcut o căutare pentru "shortcodes" și "shortcode" în fișierul functions.php și am obținut 0 rezultate.

NTL0820 NTL0820
1 feb. 2013 18:45:24

Aș face o căutare pentru the_content și aș verifica ce filtre sunt acolo.

Rob Vermeer Rob Vermeer
1 feb. 2013 18:46:14

Niciun rezultat. Poți vedea întregul fișier functions.php aici: http://pastie.org/6014295

NTL0820 NTL0820
1 feb. 2013 18:51:41

Folosește funcția pe care o vezi aici: http://goo.gl/3IIRY pentru a vedea ce filtre există pentru the_content.

Rob Vermeer Rob Vermeer
1 feb. 2013 22:01:25

Din păcate, nu cred că asta este o soluție. Problema ar putea fi într-un alt fișier în afară de functions.php?

NTL0820 NTL0820
6 feb. 2013 19:59:27
Arată celelalte 3 comentarii
Toate răspunsurile la întrebare 2
0

Așa că în sfârșit am găsit soluția!!! După multe săptămâni de căutare și încercare a diferitor soluții, totul s-a rezumat la eliminarea lui "get_" din referința către "the_content" în fișierul meu page.php. Am schimbat asta:

<?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()); ?>

În asta:

<?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()); ?>

Până acum nu am întâmpinat probleme, iar toate shortcode-urile funcționează acum. Mulțumesc tuturor pentru contribuțiile lor, fără ele nu aș fi știut unde și ce să caut.

13 mar. 2013 22:07:10
1

Bucla ta este corectă. Folosește 'the_content' (așa cum ar trebui), care ar trebui să declanșeze filtrele the_content și shortcode-urile tale ar trebui să fie procesate la fel ca în celelalte teme pe care le-ai încercat.

Trebuie să concluzionez că tema ta îndepărtează filtrele sau shortcode-urile. Caută ceva similar cu remove_filter( 'the_content', în fișierele temei tale. Verifică și pentru add_filter('the_content',. Apoi caută remove_shortcode și vezi ce ar putea fi eliminat.

Este posibil ca tema să adauge un filtru care strică shortcode-urile, dar aș paria pe una dintre primele două variante.

1 feb. 2013 18:43:59
Comentarii

Verificat pentru toate acestea fără rezultate. Nu există filtre adăugate sau eliminate pentru the_content sau remove_shortcode.

NTL0820 NTL0820
1 feb. 2013 18:55:09