サポート » 使い方全般 » HTMLとPHPの混在文をショートコードで呼び出したい

  • 解決済 YutaYuta

    (@uta_san)


    WordPressで、繰り返し処理には適していないが、何度も記述が必要になる部分をショートコードで呼び出せるようにできないかと考えています。HTMLとPHPが混ざった文章をショートコードで呼び出して、ページを表現したいです。

    現在、functions.phpに下記のような書き方でエラーが出ています。

    function short_code(){
      $sc='<a href="<?php echo esc_url(get_permalink($post_info->ID));?>">
                    <div class="post">
                        <?php echo get_the_post_thumbnail($post_info->ID, array(32, 32));?>
                        <h4 class="post-title"><?php echo $post_info->post_title;?></h4>
                    </div>
                </a>';
      return $sc
    }
    
    add_shortcode('hoge','short_code');

    エラーはID,array(32,32));?>post_title;?>のように表示されています。

    検索してみても、Htmlだけを呼び出す情報はあっても、PHPも入った文章だとどうしていいか分からない状態で困っています。ご存知の方がいらっしゃいましたら、どうぞお願い致します。

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • arborvitae666

    (@arborvitae666)

    こんにちは。

    function short_code(){
      $sc='<a href="' . esc_url(get_permalink($post_info->ID)) . '"><div class="post">' . get_the_post_thumbnail($post_info->ID, array(32, 32)) . '<h4 class="post-title">' . $post_info->post_title. '</h4></div></a>';
      return $sc;
    }
    
    add_shortcode('hoge','short_code');

    でどうでしょうか。

    トピック投稿者 YutaYuta

    (@uta_san)

    arborvitae666さん

    ご回答本当にありがとうございます!!
    修正頂いたコードを試してみました。
    うまく表示されなかったです。

    特定の投稿のIDからサムネイルとタイトルを出そうとしているのですが、最新の投稿のサムネイルが表示される結果になってしまいました。

    以下index.phpに何度も記述しているソースコードです。
    <?php $post_info = get_post(508);?>は、IDが変更になります。

     <?php $post_info = get_post(508);?>
                <a href="<?php echo esc_url(get_permalink($post_info->ID));?>">
                    <div class="post">
                        <?php echo get_the_post_thumbnail($post_info->ID, array(32, 32));?>
                        <h4 class="title"><?php echo $post_info->post_title;?></h4>
                    </div>
                </a>

    これを何度も書かなくて良いようにしたいと思っています。

    arborvitae666

    (@arborvitae666)

    IDが判明しているのであれば、

    function short_code( $args ){
    	extract( shortcode_atts( array(
    			'id' => '508',
    		), $args ) );
    	$sc='<a href="' . esc_url( get_permalink( $id ) ) . '"><div class="post">' . get_the_post_thumbnail( $id, array( 32, 32 ) ) . '<h4 class="post-title">' . $post_info->post_title. '</h4></div></a>';
    	return $sc;
    }
    
    add_shortcode('hoge','short_code');

    で使う時に、

    [ hoge id="508" ]

    PHPの方はそのまま使用してください。
    ショートコードの時だけ508を表示したい投稿IDにしてください。

    • この返信は3ヶ月前にarborvitae666が編集しました。
    トピック投稿者 YutaYuta

    (@uta_san)

    arborvitae666さん

    度々ありがとうございます!!
    やりたいと思っていることができました!
    本当に感謝感謝です。
    ありがとうございます!

    タイトルのところだけ、
    . $post_info->post_title.
    から
    . get_the_title($id).
    と書き換えました。

    またもし機会がありましたら、どうぞよろしくお願い致します。

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • このトピックに返信するにはログインが必要です。