插入帖子和更改固定链接到/%postname%/时404页面的问题

时间:2010-03-10 01:38:22

标签: wordpress permalinks

下面的例程插入一个页面,将永久链接设置为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();

3 个答案:

答案 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。

  1. 在/etc/apache2/sites-available/000-default.conf上添加以下行。

    <目录“/ var / www / html”> AllowOverride all要求全部授予

    < /目录>

  2. 然后在终端运行这个:sudo a2enmod重写。