下面的例程插入一个页面,将永久链接设置为postname,然后尝试更新永久链接设置。
但是,当我查看新创建的页面时,仍然会收到404错误。让它消失的唯一方法是点击设置>固定链接管理器(只是访问页面就可以了,我甚至不需要保存)。
这是怎么回事?
//create and insert a post
$my_post['post_content'] = "This is the content";
$my_post['post_type'] = 'page';
$my_post['post_status'] = 'publish';
wp_insert_post($my_post);
//包含负责.htaccess更新的文件 require_once(ABSPATH。'wp-admin / includes / misc.php'); require_once(ABSPATH。'wp-admin / includes / file.php');
// Prepare WordPress Rewrite object in case it hasn't been initialized yet
if (empty($wp_rewrite) || !($wp_rewrite instanceof WP_Rewrite))
{
$wp_rewrite = new WP_Rewrite();
}
// Update permalink structure
$permalink_structure = '/%postname%/';
$wp_rewrite->set_permalink_structure($permalink_structure);
// Recreate rewrite rules
$wp_rewrite->flush_rules();
答案 0 :(得分:0)
只有你的建议...... 在调试此问题之前禁用任何WordPress缓存功能。 在使用任何WP缓存时,我经常遇到永久链接问题。
答案 1 :(得分:0)
您的代码在插件或主题中在哪里?
以下插件适用于最新版本的WP。如果.htaccess
不可写,它将无效,但我认为你无法做任何事情。
function my_plugin_activate() {
$test_post = array(
'post_title' => 'Lorem ipsum',
'post_content' => 'Lorem ipsum dolor sit amet, consectetur adipisicing …',
'post_status' => 'publish',
'post_type' => 'post'
);
wp_insert_post($test_post);
global $wp_rewrite;
$wp_rewrite->set_permalink_structure('/%postname%/');
$wp_rewrite->flush_rules();
}
register_activation_hook(__FILE__, 'my_plugin_activate');
答案 2 :(得分:0)
问题在于你的apache。
在/etc/apache2/sites-available/000-default.conf上添加以下行。
<目录“/ var / www / html”> AllowOverride all要求全部授予
然后在终端运行这个:sudo a2enmod重写。