删除旧固定链接中的所有停用字词

时间:2017-12-05 作者:David Gallimore

我正在尝试删除Wordpress中永久链接中的所有停止词,以用于将来和旧内容。

Yoast为将来的URL提供了此选项,但没有对旧的永久链接进行批量更新。我知道一般来说,这将是一个糟糕的做法,以更新现有的URL的,但这是一个开发网站,从来没有被生活。

我一直在寻找这样做的插件,但没有找到任何插件。有上千种不同的帖子/页面,所以手动操作是不可取的。

有什么想法吗?

谢谢

1 个回复
最合适的回答,由SO网友:kierzniak 整理而成

此脚本将执行以下操作:

function wpse_287807_replace_url() {

    // Get all posts
    $query = new WP_Query(array(
        \'post_type\' => \'post\',
        \'posts_per_page\' => -1,
    ));

    $posts = $query->get_posts();

    foreach ($posts as $post) {

        // Get permalink
        $url = $post->post_name;

        // Stop words array
        $stop_words = array(
            \'-a-\',
            \'-the-\',
            \'-of-\',
        );

        // Replacement
        $replacement = \'-\';

        // Replace url
        $new_url = str_replace($stop_words, $replacement, $url);

        // Prepare arguments
        $args = array(
            \'ID\' => $post->ID,
            \'post_name\' => $new_url,
        );

        // Update post
        wp_update_post( $args );
    }
}

add_action(\'init\', \'wpse_287807_replace_url\');
如果您有许多帖子,请禁用创建revision 通过添加发布WP_POST_REVISIONS常数至wp-config.php. 它将加快脚本速度并减少对内存使用的需求。

define( \'WP_POST_REVISIONS\', false );

结束

相关推荐

How to replace permalinks

我已将wordpress项目导出并导入live server。现在的问题是,我将permalink结构作为“localhost”格式。当我单击网站中的任何链接时,它会将我重定向到localhost。我怎样才能改变这一点?我的htaccess文件如下所示<IfModule mod_rewrite.c> RewriteEngine On RewriteBase /myproject/ RewriteRule ^index\\.php$ - [L] RewriteCo