Naléhavé potíže s shortcode

Úvodní stránka Fórum podpory WordPressu Problémy s WordPressem Naléhavé potíže s shortcode

Zvolené téma obsahuje celkem 8 odpovědí. Do diskuze (3 účastníci) se naposledy zapojil uživatel  sjiamnocna a poslední změna je stará 10 let, 5 měsíců.

Aktuálně je na stránce zobrazeno 9 příspěvků - 1. až 9. (z celkem 9)
  • Autor
    Příspěvky
  • #4906

    sjiamnocna
    Participant
    Web

    Ahoj. Vytvořil jsem si shortcode pro výpis z CPT a vytvořil zhruba toto(je to přechodně testovací, ale mělo by to tak nějak být):

    <?php
    function songbook_shc(){
    $songbook_listshquery=array(
    'post_type'=>'song',
    'nopaging'=>true,
    'orderby'=>'title',
    'order'=>'asc',
    'posts_per_page'=>-1
    );
    query_posts($songbook_listshquery);
    if(have_posts()){ ?>
    <style type="text/css">
    .songbook_songlist{
    width:99%;
    margin:2px auto;
    border:none;
    }
    .songbook_onesonglist>tbody>tr{
    font-size:120%;
    vertical-align:65%;
    line-height:120%;

    }
    .songbook_onesonglist>tbody>tr>.songbook_titletd{
    margin:0px;
    max-width:70%;
    line-break:normal;
    }
    .songbook_onesonglist>tbody>tr>.songbook_titletd>a{
    display:block;
    margin:0px;
    width:100%;
    height:100%;
    margin-left:10%;
    }
    .songbook_onesonglist img{
    float:left;
    }
    </style>
    <?php
    echo'<table class="songbook_songlist">';
    $songbook_evenoddnum=0;
    while ( have_posts()):the_post();
    // $songbook_termlist_tostrip=get_the_term_list($post->post_id,'songauthor',__('','wpsongbook'),', ');
    // $songbook_termlist=strip_tags($songbook_termlist_tostrip);
    $songbook_even=($songbook_evenoddnum%2==0)?' style="background:#EEEEEE;"':'';
    echo'<tr'.$songbook_even.'>';
    echo'<td class="songbook_titletd"><a href="'.get_permalink().'" alt="'.__('Display whole song','wpsongbook').'">';
    the_title();
    echo'</a></td>';
    // echo'<td class="songbook_termlist">'.$songbook_termlist.'</td>';
    if(is_user_logged_in())echo'<td>'.'<img src="'.plugins_url('../img/xml_32x32.png', __FILE__ ).'">'.'<img src="'.plugins_url('../img/ppt_32x32.png', __FILE__ ).'">'.'<img src="'.plugins_url('../img/pdf_32x32.png', __FILE__ ).'">'.'</td>';
    echo'</tr>';
    $songbook_evenoddnum++;
    endwhile;
    echo'</table>';
    wp_reset_postdata();
    }
    }
    add_shortcode('songbook','songbook_shc');
    ?>

    Chci, aby se zobrazila tabulka s výpisem na místě SH a namísto toho se mi objeví tabulka a pod ní ještě výpis, jako by to byla archivní stránka…

    viz. http://www.ksgtest.g6.cz/?page_id=80

    Nevíte někdo co to má být? Děkuji mockrát…

    #16697

    admin
    Keymaster
    Web

    A nemá ta stránka nějakou speciální šablonu? Každopádně určitě bych nepoužil v tomto případě funkci query_posts(), ale raději get_posts(). Ale netuším, zda by to mohlo způsobit až takové problémy… Doporučuji také oddělit CSS do souboru style.css, zbytečně to znepřehledňuje celý kód…

    #16698

    sjiamnocna
    Participant
    Web

    Bohužel, nic se mi nepodařilo zjistit, jen že s get_posts to funguje ještě hůře než teď. Zkoušel jsem to i přes WP_Query, ale s tou moc neumím, takže jsem zkopíroval kód z jednoho pluginu od Musildy, a chvíli to fungovalo, potom už ne. Opravdu nevím co s tím… Asi tu funkci přepíšu úplně celou (až někdy budu mít čas)

    #16699

    admin
    Keymaster
    Web

    :-) Pošlete prosím přihlašovací údaje na email pavelevap@separatista.net, zkusím se na to podívat. Docela by mě zajímalo, co se tam vlastně děje. O jaký zkopírovaný kód z pluginu konkrétně šlo?

    #16700

    Musilda
    Participant
    Web

    Já bych zkusil nahradit

    if(have_posts()){}

    za

    if(have_posts()):

    endif;

    přijde mi, že query_post přepíše to volání na stránku a při prvním průchodu smyčky to narazí na if(have_posts()): stránky, pak to query_post přepíše na výpis článků, přijde druhý if(have_posts()): vypíše jednou shortcode a pak podle query post zase všechny články i s content. Vlastně se tam loop provede duplicitně, jednou v shortcode a podruhé normálně ve stránce, ale s pozměněným query_post.

    #16701

    sjiamnocna
    Participant
    Web

    Kód byl zkopírován kvůli tomu, že se mi nedařilo správně použít wp_query, z pluginu My short news, se kterým jsem si týden předtím trochu hrál (ostatně, je i na testovacím webu vpravo). Přihlašovací údaje jsem vám nechal poslat přímo z WP, takže můžu jen doufat, že dorazí :) — jde o soubor /wp-songbook/inc/wpsongs-listshortc.php

    Nahradil jsem to, jak jsi navrhnul, bohužel výstup je stále stejný. Mnohem radši používám množinové závorky než : endif; ani nevím proč, každopádně nevím, jestli to má nějaký dopad na takovou závažnost jako toto… :)

    #16702

    admin
    Keymaster
    Web

    sjiamnocna: Přístupové údaje nedorazily :-) Asi nějaký problém s odesíláním emailů?

    #16703

    Musilda
    Participant
    Web

    Zkus použít wp_reset_query();

    #16704

    sjiamnocna
    Participant
    Web

    Musilda: Bingo :D

    Přepsáním wp_reset_postdata na wp_reset_query se vše vyřešilo, tak aby mi to chvíli vydrželo :)… Děkuji mnohokrát.

    K těm stylům: vždycky ze začátku nechávám styly ve stejném souboru, abych je měl “po ruce”, potom je pomalu odsouvám do pozadí :)

Aktuálně je na stránce zobrazeno 9 příspěvků - 1. až 9. (z celkem 9)

Pokud chcete odpovědět na toto téma, musíte se nejdříve přihlásit.

WordPress – novinky, návody a zajímavosti