【ワードプレス・ショートコード、で①の分を下記ファンクションにいれたいのですが、タグがあるなどでどのように記述すればよいかわかりません。どなたかご教授いただけると幸いです。

function hogeFunc() {
return "kokoniireru";
}
add_shortcode('hoge', 'hogeFunc');

①下記をfunctionに記述したい
<?php
global $post;
$tmp_post = $post;
$category_ids = array( '17' ); //カテゴリーIDを指定
$numberposts = '100'; //一覧表示したい記事数を数字で指定
foreach ( $category_ids as $category_id ) {
?>


<h3><?php echo get_cat_name( $category_id ); ?></h3>

<ul>
<?php
$postslist = get_posts( "category=$category_id&numberposts=$numberposts&order=DESC&orderby=modified" );
foreach ( $postslist as $post ){
?>

<li> <a href=<?php echo get_permalink( $post->ID ); ?>><?php echo $post->post_title; ?><?php echo get_the_modified_date('Y年n月j日'); ?></a></li>
<?php
}
?>
</ul>

<?php
}
$post = $tmp_post;
?>

回答の条件
  • 1人10回まで
  • 13歳以上
  • 登録:2014/04/14 16:06:20
  • 終了:2014/04/17 12:23:47

ベストアンサー

id:gizmo5 No.2

gizmo5回答回数484ベストアンサー獲得回数1382014/04/15 12:58:16

ポイント80pt

質問にあるコードを機械的に書き写しただけですが、以下のようになると思います。

function hogeFunc() {
  global $post;
  $html = "";
  $tmp_post = $post;
  $category_ids = array( '17' ); //カテゴリーIDを指定
  $numberposts = '100'; //一覧表示したい記事数を数字で指定

  foreach ( $category_ids as $category_id ) {

    $html .= '<h3>' . get_cat_name( $category_id ) . '</h3><ul>';

    $postslist = get_posts( "category=$category_id&numberposts=$numberposts&order=DESC&orderby=modified" );
    foreach ( $postslist as $post ){
      $html .= sprintf(
        '<li> <a href="%s">%s %s</a></li>',
        esc_attr(get_permalink( $post->ID )),
        esc_html($post->post_title),
        get_the_modified_date('Y年n月j日')
        );
    }

    $html .= '</ul>';
  }

  $post = $tmp_post;

  return $html;
}
add_shortcode('hoge', 'hogeFunc');

パーマリンクの esc_attr() は無くても良いかもしれませんが、タイトルの esc_html() はやっておいた方が良いと思います。
http://codex.wordpress.org/Function_Reference/esc_html

サンプルは探せばたくさん見つかると思います。
http://www.virment.com/wordpress/1582/

他4件のコメントを見る
id:gizmo5

ところで、$html .の ドットはどんな意味になるんでしょうか・・・汗

$html .= ...

は、

$html = $html . ...

と同じです。$a = $a + 1 が $a += 1 と書けるのと一緒です。
マニュアルでは以下になります。
http://www.php.net/manual/ja/language.operators.string.php

記号の意味が分からないときにはググるのが難しいですよね。

2014/04/17 14:00:12
id:akakak

ありがとうございます。
勉強になりました(*^_^*)

2014/04/18 08:29:59

その他の回答(1件)

id:rafting No.1

ラフティング回答回数2652ベストアンサー獲得回数1762014/04/14 20:25:35

ポイント20pt

記事一覧を入れたいんですよね!
http://appofit.com/wordpress/template-wp/shortcode-wp/

id:akakak

ありがとうございます!

2014/04/17 12:17:11
id:gizmo5 No.2

gizmo5回答回数484ベストアンサー獲得回数1382014/04/15 12:58:16ここでベストアンサー

ポイント80pt

質問にあるコードを機械的に書き写しただけですが、以下のようになると思います。

function hogeFunc() {
  global $post;
  $html = "";
  $tmp_post = $post;
  $category_ids = array( '17' ); //カテゴリーIDを指定
  $numberposts = '100'; //一覧表示したい記事数を数字で指定

  foreach ( $category_ids as $category_id ) {

    $html .= '<h3>' . get_cat_name( $category_id ) . '</h3><ul>';

    $postslist = get_posts( "category=$category_id&numberposts=$numberposts&order=DESC&orderby=modified" );
    foreach ( $postslist as $post ){
      $html .= sprintf(
        '<li> <a href="%s">%s %s</a></li>',
        esc_attr(get_permalink( $post->ID )),
        esc_html($post->post_title),
        get_the_modified_date('Y年n月j日')
        );
    }

    $html .= '</ul>';
  }

  $post = $tmp_post;

  return $html;
}
add_shortcode('hoge', 'hogeFunc');

パーマリンクの esc_attr() は無くても良いかもしれませんが、タイトルの esc_html() はやっておいた方が良いと思います。
http://codex.wordpress.org/Function_Reference/esc_html

サンプルは探せばたくさん見つかると思います。
http://www.virment.com/wordpress/1582/

他4件のコメントを見る
id:gizmo5

ところで、$html .の ドットはどんな意味になるんでしょうか・・・汗

$html .= ...

は、

$html = $html . ...

と同じです。$a = $a + 1 が $a += 1 と書けるのと一緒です。
マニュアルでは以下になります。
http://www.php.net/manual/ja/language.operators.string.php

記号の意味が分からないときにはググるのが難しいですよね。

2014/04/17 14:00:12
id:akakak

ありがとうございます。
勉強になりました(*^_^*)

2014/04/18 08:29:59

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません