WordPress插件ElasticPress只提供了不索引特定类型PostType的帖子的方法,如果我不想某个分类被索引(比如Post类型下的分类zjdy),如何做到。这里使用SQL的方法,操作前请务必要备份数据库及服务器。
INSERT INTO wp_postmeta (post_id, meta_key, meta_value)
SELECT p.ID, 'ep_exclude_from_search', 1
FROM wp_posts p
INNER JOIN wp_term_relationships tr ON p.ID = tr.object_id
INNER JOIN wp_term_taxonomy tt ON tr.term_taxonomy_id = tt.term_taxonomy_id
INNER JOIN wp_terms t ON tt.term_id = t.term_id
WHERE t.slug = 'zjdy';
SQL语句解析
- INSERT INTO wp_postmeta: 插入数据到wp_postmeta表中。
- (post_id, meta_key, meta_value): 指定插入的列名。
- SELECT p.ID, ‘ep_exclude_from_search’, 1: 从之前的查询结果中获取post_id,并设置固定的meta_key和meta_value。
- FROM … WHERE …: 后面的部分与之前的查询相同,用于获取”zjdy”类别下的所有帖子ID。
执行注意事项
- 备份数据库: 在执行任何修改数据库的操作之前,务必备份数据库,以防意外发生。
- 直接执行SQL语句: 可以使用phpMyAdmin等数据库管理工具直接执行上述SQL语句。
- 插件或函数: 如果不熟悉SQL,可以使用WordPress的插件或函数来实现相同的功能。例如,可以使用WP_Query类获取帖子,然后循环添加meta数据。
注意事项
- meta_key: “ep_exclude_from_search”是自定义的meta_key,不同的插件或主题可能使用不同的key。请根据你的实际情况进行调整。
- meta_value: “1”通常表示排除,”0″表示包含。具体含义可能因插件而异。
- 性能: 如果你的网站有大量帖子,执行上述SQL语句可能需要较长时间。可以考虑分批处理或者优化索引来提高效率。
其他方式
- 使用插件: 很多SEO插件都提供了批量设置元数据的功能,可以直接通过插件界面来实现。
- 自定义函数: 可以编写自定义函数来循环处理帖子,并添加meta数据。
总结
通过上述SQL语句,可以快速地将指定类别下的所有帖子从搜索结果中排除。但是,在执行之前,务必仔细检查SQL语句,并备份数据库,以确保数据的安全。
建议:
- 了解ElasticPress配置: 如果您使用ElasticPress插件,可能需要在Elasticsearch中重新索引数据,以使更改生效。
- 测试: 在生产环境执行之前,建议在测试环境中进行测试,以确保一切正常。
如果您还有其他问题,欢迎随时提出。
温馨提示:
- 数据库操作风险较大,请谨慎操作。
- 如果对SQL不熟悉,建议寻求专业人士的帮助。
评论0