Home > 技术前沿 > 让wordpress离线发布不再被缩略名困挠

让wordpress离线发布不再被缩略名困挠

wordpress的离线发布用户们都曾碰到一个麻烦, 就是发布的文章总是无法直接发布缩略名, 而必须到博客的后台重新编辑, 为此有人想出了修改wordpress源文件的方法, 修改xmlrpc.php, 这个方法的确不错, 可以使得离线发布可以发送缩略名了, 但email发布文章又没有办法了, 难道再修改wp-mail.php文件? 这倒不用, 其实可以直接采用修改post.php的来实现在任何地方方便发送缩略名, 包括后台都一样, 所有的文章发布都需要过这个post.php的吗! 修改的方法如下:

找到 function wp_insert_post, 这个函数就是用来写入文章的, 所有的发布都要经过这里。

找到 wp_insert_post() 函数中的的 if ( $update ) $post_ID = (int) $ID;

在这个语句后面插入

if( !(strpos($post_title, ‘@@’) === false) ){
$post_titlename = explode(’@@’, $post_title);
$post_title = $post_titlename[0];
$post_name = $post_titlename[1];
}

然后你在发布文章时, 只要在你的标题后面加入@@缩略名, 文章会在发布时自动将@@后面的缩略名分离出来并设置好。

这个方法比上面修改xmlrpc的方法唯一的好处就是所有的地方都可以使用, 不过还是依然麻烦, 每次wordpress发布新版就得去修改。

后来我又看了一下 wordpress 的 filter , 发现了一个新的方法就是用插件的方式来实现从标题分离设置缩略名, 从而免去修改wordpress本身源文件的麻烦。

插件很简单, 我运用了两个 filter, 分别的作用是分离缩略名和设置缩略名:

add_filter(’title_save_pre’, ‘get_from_title’, 1);
add_filter(’name_save_pre’, ‘put_to_name’, 1);

插件的使用更简单, 上传激活就ok了, 然后你在写文章的时候试试把标题写成这种样式: 标题@@缩略名

应该就可以了, 你可以在文章发布成功后看看缩略名是否已经被设置了, 如果你需要修改分隔符, 请自行修改 slug_from_title.php 文件, 将里面的@@换成你想要的分隔符就可以了。

该插件在 wordpress 2.2 上试验通过, 在wordprss的其他版本未作测试。

slug from title 的下载请点这里: 点击下载

最后: ps一下, wlw 的最新版在 wordpress 2.2 上可以直接设置缩略名, 但wordpress 2.1 以下还是不能设置

  1. No comments yet.
  1. No trackbacks yet.