Программное создание страницы с использованием $wpdb и получение ошибки 404


РЕДАКТИРОВАТЬ: Оказывается, у меня была проблема с постоянной ссылкой, которая вызывала ошибку 404.

Оригинальная публикация ниже:

Я создаю страницу программно, используя $wpdb->вставить(), и полученная страница возвращает ошибку 404.

Несколько вещей, которые следует отметить

  • Я использую объект $wpdb для создания страницы, потому что я создаю ее на отдельном веб-сайте WordPress, поэтому функция wp_insert_post() не работает, потому что она вставит сообщение на веб-сайт, который я создаю звонок от. В основном у меня есть сеть веб-сайтов, и я создаю пост на одном сайте с другого сайта.
  • Я создаю пользовательское значение post_name (slug) для страницы.

Итак, когда я добавляю страницу программно, все в базе данных выглядит так, как если бы она была добавлена через административную область WordPress. Я даже могу зайти в админ-зону WordPress этого сайта и отредактировать сообщение. Однако, если я перейду к просмотру страницы, она выдаст 404. Теперь, если я "обновлю" сообщение из Админка WordPress, 404 уходит.

Если я создам сообщение программно и создам его из области администрирования WordPress, а затем посмотрю на столбцы базы данных, они будут иметь одинаковые значения (или кажутся такими). Почему один будет работать, а другой - нет? Также я использую постоянные ссылки ( ничего пользовательского, просто один из этих предопределенных вариантов ).

Это вызов вставки wpdb, который я использую...

$post = array(
    'post_author' => 1,
    'post_date' => date('Y-m-d H:i:s'),
    'post_date_gmt' => date('Y-m-d H:i:s'),
    'post_content' => '',
    'post_title' => 'My Page',
    'post_name' => 'my-page',
    'post_excerpt' => '',
    'post_status' => 'publish',
    'comment_status' => 'open',
    'ping_status' => 'open',
    'post_modified' => date('Y-m-d H:i:s'),
    'post_modified_gmt' => date('Y-m-d H:i:s'),
    'post_parent' => 0,
    'post_type' => 'page',
    'comment_count' => 0
);

$wpdb->insert(
    'wp_posts', 
    $post,
    array( '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s' );
);
Author: mikemick, 2012-01-09

1 answers

Ошибка постоянной ссылки

Я думал, что использую базовую постоянную ссылку, но забыл, что использовал пользовательскую структуру постоянных ссылок на этом конкретном веб-сайте.

Пользовательская постоянная ссылка, которую я использовал, была %postname%.

Я переключил его на опцию месяц и имя, и теперь все работает. Извините за фальшивый вопрос.

 0
Author: mikemick, 2012-01-11 15:18:37