【问题标题】:Hide section if there is no featured image如果没有特色图像,则隐藏部分
【发布时间】:2015-08-07 14:29:56
【问题描述】:

我为我正在工作的团队制作了一个自定义模板。我将此代码用于模板(以及获取页眉和页脚的部分)

<div class="main-container">
	<a href="#" id="top" class="in-page-link"></a>

<?php 
	the_post();
	
	$thumbnail = has_post_thumbnail();
	
?>

	<section class="section-header overlay preserve3d">
		
		<div class="background-image-holder parallax-background">
			<?php the_post_thumbnail('full', array('class' => 'background-image')); ?>
		</div>
		
	</section>

	<section>
		<div class="container">
			<div class="row">
			
				<div class="col-lg-12">
					<div class="article-body">
						<?php
							if(!( $thumbnail ))
								the_title('<h1>','</h1>');
								
							the_content();
							wp_link_pages();
						?>
					</div><!--end of article snippet-->
				</div>
				
				
			</div>
		</div>
	</section>

但如果没有特色图片,则会出现一个灰色框。如果没有特色图片,我宁愿隐藏整个部分,因为它看起来会更好。

我是 php 菜鸟,所以我不知道该怎么做。我认为我需要做的:使用 if/else 语句检查特色图片。如果没有图像,请在该部分添加一个类,并在我的 css 文件中为该类定义“不显示”。

所以这是我尝试与之配对的代码,但它不起作用:

<?php
// Must be inside a loop.

if ( has_post_thumbnail() ) {
	the_post_thumbnail();
}
else {
	$("section:first").addClass("noshow");
}
?>

这段代码不正确吗?我需要将它放在我的文档中的哪个位置才能使用?

【问题讨论】:

  • 您的代码无法运行,因为 $("section:first").addClass("noshow");是jQuery。但是,您使用 if 语句走在正确的道路上。使用 if 语句检查图像是否存在。如果它在那里输出它......我猜它是这样的。 if (isset($thumbnail['background-image'])){ 做某事}?>

标签: php wordpress addclass


【解决方案1】:

在服务器上执行 PHP 时,在用户端执行 jquery。您总是可以回显该 jquery 语句,并以这种方式将其发送给用户。

您可以按照 Martin E. 在他的评论中所说的路径(我认为这是一个更简洁的版本),或者您可以通过在您的标题上添加 jquery 来追求您的工作方式(如果您没有的话)并尝试一些东西像这样:

<?php
if ( has_post_thumbnail() ) {
    the_post_thumbnail();
}
else {
    echo '<script>$("section:first").addClass("noshow");</script>';
}
?>

【讨论】:

  • 感谢您的帮助!我删除了脚本中获取缩略图的部分,否则我将有两个缩略图。但是,它并没有给该部分上课。我也可以调用一个有类的部分吗?需要消失的部分是“section-header”。
  • 你可以在需要的地方添加到 $(".section-header").addClass("noshow");
猜你喜欢
  • 2016-02-28
  • 1970-01-01
  • 1970-01-01
  • 2023-03-15
  • 1970-01-01
  • 2013-04-02
  • 2023-03-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多