ワードプレスのショートコードについて質問させてください。

前回、
http://q.hatena.ne.jp/1400309518
の記事より解答者様より素晴らしいコードを書いていただきました。

さぁいざ実装としてみると

Parse error: syntax error, unexpected '=' in /home/****************functions.php on line 5
が表示されてしまいます。
私も多少PHPに知識があるので何度見ても、いろいろ試してもだめでした。
どなたかアドバイスいただけないでしょうか?
【コード】
function hogeFunc() {
rtnVal = '';
rtnVal .= '<font color="#000000" size="4"><strong>【関連記事】</strong></font>';
rtnVal .= '<ul class="aaa">';

foreach((get_the_category()) as $cat) {
$cat_id = $cat->cat_ID ;
break ;
}
$query = 'cat=' . $cat_id . '&showposts=4';
query_posts($query) ;

if ( have_posts() ) : while ( have_posts() ) : the_post();

rtnVal .= '<li><a href="' . the_permalink() . '">' . the_title() . '</a></li>';

endwhile; endif;
rtnVal .= '</ul>';
wp_reset_query();

return rtnVal;
}
add_shortcode('hoge', 'hogeFunc');

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2014/05/24 06:07:46

ベストアンサー

id:sasada No.1

回答回数1482ベストアンサー獲得回数133

何がいけないのでしょうね。ひとまず、

$cat_id = "";     // 宣言と初期化
$categories = get_the_category(); //初期化の外出し
foreach($categories as $cat) {
    $cat_id = $cat->cat_ID ;
    break ;
}

とかでしょうか。

id:akakak

変数に$をつけたところエラーになりませんでした。
ところが、HTMLはきちんと表示されたのですが、URLとタイトルだけ外に飛びでてしまいました。
URL/タイトル
【関連記事】

2014/05/23 17:37:51
id:akakak

コードがはれないのですが、
ulなどのソースはきちんと表示されています。

2014/05/23 17:40:12

その他の回答1件)

id:sasada No.1

回答回数1482ベストアンサー獲得回数133ここでベストアンサー

何がいけないのでしょうね。ひとまず、

$cat_id = "";     // 宣言と初期化
$categories = get_the_category(); //初期化の外出し
foreach($categories as $cat) {
    $cat_id = $cat->cat_ID ;
    break ;
}

とかでしょうか。

id:akakak

変数に$をつけたところエラーになりませんでした。
ところが、HTMLはきちんと表示されたのですが、URLとタイトルだけ外に飛びでてしまいました。
URL/タイトル
【関連記事】

2014/05/23 17:37:51
id:akakak

コードがはれないのですが、
ulなどのソースはきちんと表示されています。

2014/05/23 17:40:12
id:fiwa No.2

回答回数1200ベストアンサー獲得回数253

できるだけ変更せずに書き換えてみました。
書き換えたのは次の部分です。

  • rtnVal → $rtnVal
  • the_permalink() → get_the_permalink()
  • the_title() → get_the_title()
function hogeFunc() {
$rtnVal = '';
$rtnVal .= '<font color="#000000" size="4"><strong>【関連記事】</strong></font>';
$rtnVal .= '<ul class="aaa">';

foreach((get_the_category()) as $cat) {
$cat_id = $cat->cat_ID ;
break ;
}
$query = 'cat=' . $cat_id . '&showposts=4';
query_posts($query) ;

if ( have_posts() ) : while ( have_posts() ) : the_post();
$rtnVal .= '<li><a href="' . get_the_permalink() . '">' . get_the_title() . '</a></li>';
endwhile; endif;
$rtnVal .= '</ul>';

wp_reset_query();
return $rtnVal;
}

add_shortcode('hoge', 'hogeFunc');
他1件のコメントを見る
id:fiwa

すいません、余計な制御文字が紛れ込んでいたようです。
再編集してみましたので、再度試してみて下さい。
というか、要するに変数にきちんと$を付けて別の関数を試してみて、ということなんですけど。

2014/05/23 18:04:44
id:akakak

大変お手数おかけし申し訳ございません。

変数の件承知いたしました。

2014/05/24 06:07:27
id:akakak

質問者から

ak2014/05/23 21:09:13

皆様コメント誠にありがとうございます。

>PHPの変数は「$xxx」で「$」から始まりますね・・・

た、たしかに。。汗

思い込みは怖いですねw気が付きませんでした・・

試しています。

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

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

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

回答リクエストを送信したユーザーはいません