删除重复文章
How to Bulk Delete WordPress Posts (2 Easy Solutions)
我们的文章是是批量导入的,但是由于原始文章删除失败,导致页面存在大量重复的文章。
我们需要删除这些重复的文章(他们的 Title 是相同的)。
补充说明
在我们的场景中,由于文章 Title 相同,所以我们能够识别出重复的文章。但是,如果能确定重复的依据,则依旧可以套用该方法。
解决方案
第一步、安装 WP Bulk 插件,我们需要使用其 By URL(根据 URL 删除)功能。
第二步、查找相同的文章,使用如下 SQL 语句并生成链接:
-- 注意事项:该 SQL 并非适用于所有场景,仅适用于“创建重复文章并希望删除旧文章的场景”的场景 SELECT -- a.id, -- b.id, -- a.post_title, CONCAT('http://blog.example.com/?p=', a.id) FROM wp_posts a LEFT JOIN ( SELECT id, post_title , MAX(id) AS pd, COUNT(id) AS m FROM wp_posts wp GROUP BY post_title ORDER BY id ASC) AS b ON b.pd = a.id WHERE b.id IS NULL;
第三步、删除文章
将如上 SQL 语句生成的链接复制到 Bulk WP / Bulk Delete Posts / By URL 中,然后点击 Bulk Delete 进行删除。
清理 Reversion 文章
How to Disable and Remove Old Post Revisions in WordPress
1)通过 WP Optimiztions 插件
2)或直接从数据库删除(DELETE FROM wp_posts WHERE post_type = “revision”;);
在 wp-config.php 中,定义如下变量,以抑制 Reversion 功能:
define( 'WP_POST_REVISIONS', false ); define( 'WP_POST_REVISIONS', true );
显示树形结构(Pages)
How to Display a List of Child Pages For a Parent Page in WordPress
wp_list_pages() | Function | WordPress Developer Resources
通过自定义代码(废弃)
function wpb_list_child_pages() { global $post; if ( is_page() && $post->post_parent ) $childpages = wp_list_pages( 'sort_column=menu_order&title_li=&child_of=' . $post->post_parent . '&echo=0' ); else $childpages = wp_list_pages( 'sort_column=menu_order&title_li=&child_of=' . $post->ID . '&echo=0' ); if ( $childpages ) { $string = '<ul class="wpb_page_list">' . $childpages . '</ul>'; } return $string; } add_shortcode('wpb_childpages', 'wpb_list_child_pages'); // 然后在文章中,使用 [wpb_childpages] 代码(do_shortcode("[wpb_childpages]")); // 或者在主题中,直接 <?php wpb_list_child_pages(); ?> 调用
通过 List Pages Shortcode 插件
通过 List Pages Shortcode 插件,其提供 [list-pages] 来获取 Pages 树形结构。
若需要在每个页面中添加 shortcode 代码,需要借助其他方法(Add a shortcode to every post or page):
# vim /path/to/theme/function.php ... function my_shortcode_to_a_post( $content ) { global $post; if( ! $post instanceof WP_Post ) return $content; switch( $post->post_type ) { case 'post': return $content . '[my_post_shortcode_goes_here]My content[/my_post_shortcode_goes_here]'; case 'page': return $content . '[my_page_shortcode_goes_here]My content[/my_page_shortcode_goes_here]'; default: return $content; } } add_filter( 'the_content', 'my_shortcode_to_a_post' ); ...
在每个页面中添加 shortcode 代码的另外方法是:借助主题支持,某些主题支持自定义,并支持在每个全部页面添加 shortcode 代码;