我要迁移Joomla!Wordpress的数据库和网站必须保持URL的精确性。Joomla网站的帖子有。html扩展名,我创建的导入程序将Joomla文件URL映射到Wordpress post\\u名称,如下所示:
joomla现场。Joomla内容的com/标题。html->Wordpress DB::post\\u名称joomla内容的标题
我可以通过Wordpress网站直接访问Wordpress安装上的帖子。Joomla内容的com/标题
但我需要改变permalink系统的响应方式。我不想使用重定向(在标题中显示),所以我尝试挂接一个函数,如果URL以结尾,则该函数将以不同的方式选择帖子ID。html。
由于Wordpress仅在找不到文件时激活,因此real。html文件不受影响。所以对任何人都有全面的检查和更换功能。html文件不是问题。
我尝试过:
function custom_redirect() {
global $post_id,$wpdb;
if (substr($_SERVER[\'REQUEST_URI\'],-5) == \'.html\') {
$check = $wpdb->get_var($wpdb->prepare("SELECT ID FROM $wpdb->posts WHERE post_name=%s AND post_status = \'publish\'",substr(basename($_SERVER[\'REQUEST_URI\']),0,-5)));
if ($check > 0) $post_id = $check;
// Need to set the post ID for the wp_query here.
}
}
if (!is_admin()) add_action( \'init\', \'custom_redirect\' );
上面的代码正确地选择了post ID,但我不确定使用什么函数或钩子来强制post(single.php)显示它。
我可以使用以下方法为每个归档设置帖子ID。php运行,但这不会影响单个。php文件,它只调用函数the\\u post。
function force_ID($query) {
$query->set(\'post_id\', \'96\');
}
add_action(\'pre_get_posts\',\'force_ID\');
我觉得这可能很简单,比如更改$wp\\u查询的全局实例,但我不确定最好的方法。使用init钩子的执行顺序可能也太高了。