我创建了一个wordpress网站。它具有标准的搜索功能,内置Wordpress。搜索工具存在一个小问题(但主要问题)。它在页面内容中查找关键字。
e.g。网站网址是:www.mywebsite.com
内容中添加了一些带有段落的图片,其中的html代码如下:
<p>Lorem ipsum dolor, sit amet consectetur adipisicing elit. Laborum facere porro aut suscipit nostrum nisi, illo excepturi possimus quibusdam obcaecati blanditiis ex, quos necessitatibus officia recusandae totam aliquid quia. Quasi.</p>
<img src="http://www.mywebsite.com/wp-content/themes/mytheme/img/photo.jpg" alt="">
<p>Lorem ipsum dolor sit, amet consectetur adipisicing elit. Eos consectetur pariatur amet tempore at suscipit, tenetur modi fugiat perspiciatis quaerat distinctio dolor recusandae aliquam consequatur ullam doloremque voluptas quos eaque.</p>
因此,如果我将关键字搜索为 mywebsite ,则会在搜索结果中返回此页面,因为它会在下面的图片路径中找到关键字 mywebsite :
万维网。的 mywebsite 的.com /可湿性粉剂内容/主题/ mytheme的/ IMG / photo.jpg
实际上这是错误的,因为实际页面内容文本中没有关键字 mywebsite 。
我该如何解决?这里有两个选项:
答案 0 :(得分:0)
这应该相对简单,请试一试:
// Exclude images from search results - WordPress
add_action( 'init', 'exclude_images_from_search_results' );
function exclude_images_from_search_results() {
global $wp_post_types;
$wp_post_types['attachment']->exclude_from_search = true;
}
在functions.php文件中添加以下代码段。假设图像是所述帖子的一部分,这应该排除它们。希望这有帮助!
修改强>
我将在您的位置做的是修改搜索结果模板,或创建自己的模板。您可以像之前在搜索结果模板中提到的那样修改内容。我已经创建了一个示例,通过它可以提取内容中的所有图像标记,并使用已清理的内容输出标题(在这种情况下,没有图像)。
<?php get_header(); ?>
<section id="primary" class="content-area">
<main id="main" class="site-main">
<?php if ( have_posts() ) : ?>
<header class="page-header">
<h1 class="page-title">
<?php
/* translators: %s: search query. */
printf( esc_html__( 'Search Results for: %s'), '<span>' . get_search_query() . '</span>' );
?>
</h1>
</header><!-- .page-header -->
<?php
/* Start the Loop */
while ( have_posts() ) :
the_post();
$post_title = $post->post_title;
$post_content = $post->post_content;
$post_content = preg_replace("/<img[^>]+\>/i", " ", $post_content);
$post_content = apply_filters('the_content', $post_content);
$post_content = str_replace(']]>', ']]>', $post_content);
echo "<article>";
echo "<h1>" . $post_title . "</h1>";
echo "<p>" . $post_content . "</p>";
echo "</article>";
endwhile;
the_posts_navigation();
else :
// This is where your no search results output block would be
get_template_part( 'template-parts/content', 'none' );
endif;
?>
</main><!-- #main -->
</section><!-- #primary -->
<?php
get_sidebar();
get_footer();