Úvodní stránka › Fórum podpory WordPressu › Problémy s WordPressem › Naléhavé potíže s shortcode
Štítky: custom post types, error, list, plugin, 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ů.
-
AutorPříspěvky
-
30. října 2013 (16:19) #4906
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…
30. října 2013 (18:53) #16697A 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…
30. října 2013 (19:25) #16698Bohuž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)
30. října 2013 (19:56) #16699:-) 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?
31. října 2013 (5:06) #16700Já 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.
31. října 2013 (6:42) #16701Kó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… :)
31. října 2013 (7:45) #16702sjiamnocna: Přístupové údaje nedorazily :-) Asi nějaký problém s odesíláním emailů?
31. října 2013 (9:41) #1670331. října 2013 (18:27) #16704Musilda: 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í :)
-
AutorPříspěvky
Pokud chcete odpovědět na toto téma, musíte se nejdříve přihlásit.