我有一个wordpress网站运行wordpress插件WooCommerce.由于该网站处理的产品数量庞大,我们一直在管理网站外的产品列表并上传它.很多产品还没有图像,但它们有一个硬编码的图像网址,所以我们可以在我们得到它们时添加它们.为了解决损坏的图像,我只是稍微搜索图像大小,如果我找不到它并用占位符替换它.
$src = wp_get_attachment_image_src( get_post_thumbnail_id($post->ID), $size);
if (@getimagesize($src[0])) {
//display product image
} else {
//display placeholder image
}
Run Code Online (Sandbox Code Playgroud)
这在大多数情况下工作正常,但现在我正在努力在一个类别中显示产品.我想先显示带有图像的所有产品,然后显示没有图像的产品.问题是一旦循环开始,如果我排除没有图像的产品,它将循环通过前12个产品,只显示12个有图像的子集.我想要它做的是继续循环,直到我有12个带图像的产品(如果有12个带有图像的产品).
这就是我现在所做的不起作用.
<?php if ( have_posts() ) : ?>
<ul class="products">
<?php while ( have_posts() ) : the_post(); ?>
<?php
$src = wp_get_attachment_image_src( get_post_thumbnail_id($post->ID), $size);
if (@getimagesize($src[0])) {
woocommerce_get_template_part( 'content', 'product' );
}
?>
<?php endwhile; // end of the loop. ?>
</ul>
<?php endif; ?>
Run Code Online (Sandbox Code Playgroud)
我无法编码的可能逻辑解决方案是在循环中忽略某些产品(如果没有图像则会进行另一次运行)或以某种方式将我的查询编码为循环要求的一部分,即将其置于其中$ args?
任何帮助将不胜感激.
我的页面上运行了多个codemirror实例.有些是隐藏的,你可以使用标签在它们之间移动.我想做的是能够根据容器设置焦点.
在某些时候,实例是这样启动的:
var cmInstance = CodeMirror(target, options());
Run Code Online (Sandbox Code Playgroud)
所以我要么能够通过使用容器来获取在该容器上启动的实例,例如:
cm = target.getCodeMirror();
Run Code Online (Sandbox Code Playgroud)
或者可能根据容器设置焦点,例如:
target.setFocus();
Run Code Online (Sandbox Code Playgroud)
这样的事情是可能的,还是我应该保留一个数组中的单个实例的记录?
是否可以包含多个提示源以进行自动完成?我试过这个:
CodeMirror.commands.autocomplete = function(cm) {
CodeMirror.showHint(cm, CodeMirror.hint.xml);
CodeMirror.showHint(cm, CodeMirror.hint.html);
CodeMirror.showHint(cm, CodeMirror.hint.css);
CodeMirror.showHint(cm, CodeMirror.hint.javascript);
};
Run Code Online (Sandbox Code Playgroud)
但它似乎只包括引用的最后一个源文件而忽略其余的.这有什么简单的方法吗?