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 回答