-3

我一直在尝试我的这个项目一段时间,但我没有运气。我正在尝试在functions.php 中以编程方式创建8 个帖子。我需要这些只发布 1 次。我遇到的问题是每次刷新页面时,帖子都会自动创建更多内容。这是我在functions.php中以编程方式创建帖子的代码。

<?php // Create post object
$my_post = array(
     'post_title' => 'How to make your diet success',
     'post_name' => '7-ways-to-make-succes-Diet',
     'post_content' => 'my content',
     'post_status' => 'publish',
     'post_author' => 1,
     'post_category' => array(8,39)
  );

// Insert the post into the database
wp_insert_post( $my_post ); ?>

此代码的唯一问题是每次页面刷新时它都会自动创建更多帖子。我将创建 8 个这样的函数,我只希望它们被创建一次。一个代码示例会很棒。


接下来,我想在我的 index.php 上显示帖子。我想单独获得这些帖子。这是我到目前为止的代码。

<div class="post1"><?php $post_id = wp_insert_post( $post, $wp_error );
//now you can use $post_id withing add_post_meta or update_post_meta ?> </div>

<div class="post2"><?php $post_id = wp_insert_post( $post, $wp_error );
//now you can use $post_id withing add_post_meta or update_post_meta ?> </div>

我很确定我需要打电话给蛞蝓或帖子名称来单独获取它们。是的,我已经尝试过这种方法以及其他 10 种方法,但没有任何效果。我得到的最接近的是显示帖子名称。代码示例会很棒。如果有人可以为我工作,我将非常感激并可能通过贝宝捐赠一些钱。谢谢。

4

1 回答 1

2

functions.php 不是以编程方式创建页面或帖子的好地方。您应该创建一个插件(就像创建自定义主题一样简单)并在其激活函数中创建帖子。此函数仅在您的插件激活时调用。另请阅读有关插件停用卸载挂钩的信息

一次又一次地创建您的帖子的原因是每次请求页面时都会调用文件 functions.php。如果您坚持在functions.php 中创建帖子,您应该通过检查您的帖子是否已经创建的条件来包装您的wp_insert_post - 而get_posts函数将适合您的需要。

<?php 
//Use either post slug (post_name)
$post = get_posts( array( 'name' => '7-ways-to-make-success-diet' ) );
/*or $post = get_posts( array( 'name' => sanitize_title('My Single.php Test') ) );
if you do not set the post_name attribute and let WordPress to set it up for you */
if ( empty($post) ) {
    // Create post object 
    $my_post = array( 'post_title' => 'My Single.php Test', 'post_name' => '7-ways-to-make-success-diet', 'post_content' => 'my content4654654', 'post_status' => 'publish', 'post_author' => 1, 'post_category' => array(8,39) ); 
    // Insert the post into the database 
    wp_insert_post( $my_post ); 
}
?>

此外,get_posts 将帮助您将帖子放在首页。例如。

<?php 
$post = get_posts( array( 'name' => 'How to make your diet success' ) );
echo $post->post_title;
...
?>
于 2013-02-02T13:21:01.293 回答