Wordpress - 检查帖子是否存在,如果是,则更新字段

时间:2013-03-16 20:27:15

标签: wordpress posts

我使用前端表单发布,我想要的是检查帖子是否按标题存在。如果是,并且元字段值大于旧字段,只需替换值。 过去曾经实现过类似内容的人吗?

 <?php 
 session_start();
 $user_email = $_SESSION['user_email']; 
 $user_name = $_SESSION['user_name'];
 $user_img_url = 'https://graph.facebook.com/'.$user_name.'/picture?width=200&height=200';

            global $wpdb;
            global $post;
            $title = $user_name; // get the inputted title
            $content = $_POST['content']; // get the inputted content
            $categorie = $_POST['cat'];  // get the category selected by user
            $zombies = $_POST['zombies'];
            $kliks = $_POST['klik'];
            $timess = $_POST['times'];
            $name = $_POST['namn'];


              if( 'POST' == $_SERVER['REQUEST_METHOD'] ) { // if form has been submitted


                    $my_post = array(
                     'post_title' => $title,
                     'post_content' => $content,
                     'post_status' => 'publish',
                     'post_author' => 2,
                     'post_category' => array(2),
                      );

                $my_post = wp_insert_post($my_post);
                add_post_meta($my_post, 'Zombies', $zombies);
                add_post_meta($my_post, 'klik', $kliks);
                add_post_meta($my_post, 'times', $timess);
                add_post_meta($my_post, 'namn', $name);
                add_post_meta($my_post, 'profile_photo', $user_img_url);
                wp_redirect( home_url() );


                  # if $verifica is not empty, then we don't insert the post and we display a message

              } 
        ?>

1 个答案:

答案 0 :(得分:3)

您的问题对我来说不是很清楚,但如果您想通过它的标题查询帖子,那么您可以使用下面给出的get_page_by_title()函数

$post = get_page_by_title( $_POST['post_title'], OBJECT, 'post' );

要获取自定义元字段,您可以使用下面给出的get_post_meta()函数

$meta_value = get_post_meta($post->ID, 'field_name', true);

然后比较并更新您可以使用的元值,例如

if( $_POST['custom_meta_field'] > $meta_value )
{
    // Update the meta value
    update_post_meta( $post->id, 'field_name', $meta_value );
}

update_post_meta()函数用于更新自定义元字段。

更新:(根据评论)

您可以使用以下内容获取Facebook ID

提供的帖子
$post = get_page_by_title( $_POST['facebook_id'], OBJECT, 'post' );

此外,如果元字段为time字符串(上午12:10),则在比较之前必须将其转换为时间戳/数值,例如,

$meta_value = strtotime(get_post_meta($post->ID, 'field_name', true));

所以,它会变成类似1363493400的东西,你可以比较像

if( $_POST['custom_meta_field'] > $meta_value ){ ... }

在这种情况下,您的custom_meta_field也应该是时间戳/数字值,或者您必须使用strtotime()函数对其进行转换,就像$meta_value已被转换一样。