我查看了有关此主题的其他帖子,无法找到我正在寻找的内容。
我想根据我所在的页面调用不同的短代码。
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 ...
if ( is_page(545) ) { <?php echo do_shortcode('[scrapeazon asin="Product1"]') ?>}
elseif ( is_page(525) ) { <?php echo do_shortcode('[scrapeazon asin="Product2"]') ?>}
else ...
非常感谢任何帮助!
谢谢,
麦克
答案 0 :(得分: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
}
}
?>
虽然它可能更快,而且你的数据库工作更少,但是一次选择所有页面并循环遍历该数组。