MT4で「Can’t call method “execute” on an undefined value」というエラーメッセージが出た時の対処法
この間、MT4の再構築中に、こんなメッセージが。
Can’t call method "execute" on an undefined value
(Can’t call method "execute" on an undefined value)
で、いろいろと調べた結果、
<MTEntries lastn="0">みたいなことをしていたり、
プラグインの「PageBute」を使用していて、
管理画面で記事表示数を0(無制限)に設定していたりすると、
1000記事以上出した時に、再構築の処理に困ってこんなエラーメッセージを吐き出すらしい。
一度に大量の記事を処理させるとダメなんですね。
というわけで、再構築する記事を分割で処理させることで解決します。
(※PageBute使用中)
<MTPageContents count="3"> <MTEntries> <$MTEntryTrackbackData$> <$MTInclude module="ブログ記事の概要"$> </MTEntries> </MTPageContents>
こういうところを、、、
<MTPageContents count="3"> <mtSetVarBlock name="ent_count"><$MTBlogEntryCount$></mtSetVarBlock> <mt:for var="arc_loop" from="0" to=$ent_count increment="200"> <MTEntries sort_order="descend" lastn="200" offset=$arc_loop> <$MTEntryTrackbackData$> <$MTInclude module="ブログ記事の概要"$> </MTEntries> </mt:for> <$MTPageSeparator$> </MTPageContents>
こうすればOK!
increment=”200″、lastn=”200″ってところの数字を変えると、
一度に処理させる記事数を変えることができます。
(500とかでも大丈夫みたい!)
なんだ!楽勝じゃん!
と思ったんですが、インデックスや、アーカイブを再構築する分には問題ないのですが、
全体を再構築すると、やはりCan’t call method "execute" on an undefined valueというエラーメッセージが・・・。
そこでエラーメッセージの出ていた、「sitemap.xml」を見なおしてみると、
<MTEntries lastn="$blogentrycount">
こんな記述怪しいを発見!
この記述をこんな感じにしてみると・・・
(※修正前)
<MTEntries lastn="$blogentrycount"> <url> <loc><$MTEntryPermalink encode_xml="1"$></loc> <lastmod><$MTEntryModifiedDate format="%Y-%m-%dT%H:%M:%S"$><$MTBlogTimezone$></lastmod> <priority>1.0</priority> </url> </MTEntries>
(※修正後)
<MTSetVarBlock name="blogentrycount"><$MTBlogEntryCount$></MTSetVarBlock> <mtSetVarBlock name="ent_count"><$MTBlogEntryCount$></mtSetVarBlock> <mt:for var="arc_loop" from="0" to=$ent_count increment="200"> <MTEntries sort_order="descend" lastn="200" offset=$arc_loop> <url> <loc><$MTEntryPermalink encode_xml="1"$></loc> <lastmod><$MTEntryModifiedDate format="%Y-%m-%dT%H:%M:%S"$><$MTBlogTimezone$></lastmod> <priority>1.0</priority> </url> </MTEntries> </mt:for>
はい、直った!
同じようなGoogleサイトマップの記述をしている方はハマっているのではないでしょうか。。