サポート » 使い方全般 » ショートコードを作りたい

  • PHP初心者なので教えてください。
    以下のコード全体でひとつのショートコードを作りたいのですが、
    functions.phpにはどのように記述すればいいでしょうか?

    全体でひとつのコードではなくても、他にやり方があれば教えていただきたいです。
    よろしくお願いいたします。

    <ul style="list-style:none">
    <?php
       $newslist = get_posts( array(
         'posts_per_page' => 4
       ));
       foreach( $newslist as $post ):
       setup_postdata( $post );
    ?>
    <li style="float:left; margin-right: 10px;"><a>"><?php the_post_thumbnail(array(130,130)); ?></a>
    <a>"><?php the_title(); ?></a>
    <?php
      endforeach;
      wp_reset_postdata();
    ?>
    </ul>
5件の返信を表示中 - 1 - 5件目 (全5件中)
  • ショートコードの作成方法は、WordPressのCodexほか、調べるとたくさんのサイトで解説してあります。

    トピック投稿者 703s

    (@703s)

    ここまでコードを作成したのですが、
    サムネイルがリスト内に表示されなかったり、リンクがつかなかったりと
    どうもうまくいきません。
    原因が分かる方いらっしゃったら教えていただけませんか?
    無知なものですみません。。。

    function getCatItems($atts, $content = null) {
    	extract(shortcode_atts(array(
    		"num" => '4',
    		"cat" => ''
    	), $atts));
    	global $post;
    	$oldpost = $post;
    	$myposts = get_posts('numberposts='.$num.'&order=DESC&orderby=post_date&category='.$cat);
    	$retHtml='
    <ul>';
    	foreach($myposts as $post) :
    		setup_postdata($post);
    	$retHtml.='<li class="new_post"><a href="'.get_permalink().'">'.the_post_thumbnail(array(130,130)).'</a>';
    	$retHtml.='<a href="'.get_permalink().'">'.the_title("","",false).'</a>';
    	endforeach;
    	$retHtml.='</ul>
    ';
    	$post = $oldpost;
    	return $retHtml;
    }
    add_shortcode("my_list", "getCatItems");
    モデレーター gatespace

    (@gatespace)

    the_post_thumbnail が間違い。
    WordPressでは基本的に the_ で始まる関数はその関数の場所で出力します。
    ショートコードなど return で返す必要がある場合は使えません。
    get_ で始まる関数で置き換えてください

    トピック投稿者 703s

    (@703s)

    get_ にしたらうまくいきました!ありがとうございます。

    ただもう1点…。
    ショートコードを投稿ページに挿入すると、
    下のコンテンツとスペースをあけたいのに、
    &nbsp;でも改行されません。
    加えて、プレビューすると同ページの他の部分のclass指定が
    削除されてしまうという現象がおきます。

    ショートコードを挿入したことと関係があるのでしょうか?

    モデレーター gatespace

    (@gatespace)

    ショートコードを投稿ページに挿入すると、
    下のコンテンツとスペースをあけたいのに、
     でも改行されません。

    ショートコードで出力するHTMLになんかcssクラスでも割り当ててスタイルシートで調整すればいいのでは?

    加えて、プレビューすると同ページの他の部分のclass指定が
    削除されてしまうという現象がおきます。

    言葉だけでは具体的な原因が分かりません(エスパーではないので)

    デフォルトテーマで試すとか、プラグインをすべてオフにするとか試しました?
    参照「問題解決のためのチェックリスト」

5件の返信を表示中 - 1 - 5件目 (全5件中)
  • トピック「ショートコードを作りたい」には新たに返信することはできません。