$ loop = new WP_Query(array(' post_type' =>' special_offers',>' posts_per_page' => -1));
while($ loop-> have_posts()):$ loop-> the_post();
echo do_shortcode(' [my_special_offer_item]');
ENDWHILE;
wp_reset_query();`
我的短代码在IE,Chrome和&amp ;;的while循环中没有递增。 Safari,因此它们都是重复的......但在FF内部它完美无缺。
答案 0 :(得分:1)
很抱歉怀疑你,但我确实很难相信do_shortcode
根据浏览器的不同而有所不同。由于这是PHP代码,因此它在到达浏览器之前执行,虽然PHP代码实际上可能会根据用户代理执行不同的操作,但实际情况并非如此。
但是,如果短代码本身存在任何渲染问题,您可能会在浏览器中看到不同的内容,但这更接近模板/主题本身而不是代码。
至于do_shortcode,请注意,Codex文档(https://codex.wordpress.org/Function_Reference/do_shortcode)和源代码(https://core.trac.wordpress.org/browser/tags/4.2.2/src/wp-includes/shortcodes.php#L189)似乎都是以任何方式自动递增。
也许您应该在其中注入动态变量,根据帖子进行不同的短代码搜索?如果是这样,检查变量字符串插值或只是连接这是一个例子(https://wordpress.org/support/topic/how-to-use-echo-do_shortcode-with-dynamic-variable)
<?php echo do_shortcode('[walkscore ws_wsid="example" ws_address="'.get_post_meta($post->ID, 'pyre_full_address', true).'"]'); ?>
我希望这会有所帮助。