0

このトピックに関する他の投稿を見ましたが、探しているものが見つかりません。

現在のページに応じて異なるショートコードを呼び出したい。

is_page 関数はループ内で機能しないため、これを達成する方法がわかりません。これが私がこれまでに持っているものです。それは私には理にかなっていますが、何らかの理由で機能しません。

if ( is_page(545) ) { <?php echo do_shortcode('[scrapeazon asin="Product1"]') ?>}  

elseif ( is_page(525) ) { <?php echo do_shortcode('[scrapeazon asin="Product2"]') ?>}

else ...

どんな助けでも大歓迎です!

ありがとう、

マイク

4

1 に答える 1

0

Wordpress Docsに従って関数を正しく使用していますが、PHP はオフになっています。phpが<?phpすでに開いているときにタグを開き、必要のない終了タグも一致し、セミコロンがありません。

<?php

if ( is_page(545) ) { echo do_shortcode('[scrapeazon asin="Product1"]'); }
elseif ( is_page(525) ) { echo do_shortcode('[scrapeazon asin="Product2"]'); } 
else ...

?>

単一行の実行には中括弧は必要ありませんが、エラーを強調するために残しておきました。

それを行うためのよりクリーンな方法があります

<?php
$pages=array(
    545=>'Product1',
    525=>'Product2',
    567=>'Product3',
    568=>'Product4',
    // etc
    // etc
);
foreach ($pages as $page_id=>$asin){
    if (is_page($page_id)) {
        echo do_shortcode('[scrapeazon asin="'.$asin.'"]');
        break; // because you used elseif you must want to stop checking ids after finding one is a page
    }
} 
?>

すべてのページを一度に選択してその配列をループする方がおそらく高速で、データベースの作業が少なくなります。

于 2013-10-21T23:42:48.727 に答える