Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php WP-在WP\U插入\U post之前检查post是否存在_Php_Wordpress - Fatal编程技术网

Php WP-在WP\U插入\U post之前检查post是否存在

Php WP-在WP\U插入\U post之前检查post是否存在,php,wordpress,Php,Wordpress,如何在wp_insert_post之前检查post是否存在以避免重复 如果我删除'if'语句(post_exists())并继续重新插入产生多个重复的帖子,下面的代码就会起作用。我用post_exists()编写了if语句,只是为了开始实现检查逻辑,但是当我添加if语句时,一些东西中断了,下面的列表甚至没有打印出来 $body = wp_remote_retrieve_body( $request ); $data = json_decode(utf8ize($body), true);

如何在wp_insert_post之前检查post是否存在以避免重复

如果我删除'if'语句(post_exists())并继续重新插入产生多个重复的帖子,下面的代码就会起作用。我用post_exists()编写了if语句,只是为了开始实现检查逻辑,但是当我添加if语句时,一些东西中断了,下面的列表甚至没有打印出来

 $body = wp_remote_retrieve_body( $request ); 
  $data = json_decode(utf8ize($body), true); 
  $data_events = $data['events'];

  if( ! empty( $data_events ) ) {
    echo '<ul>';
        foreach( $data_events as $event ) {
        // the if statement below seems to break things ie. no li below printed.
        if ( post_exists( $event['name'] ) == 0 ) {
          echo 'exists';
        } else {
          echo 'doesnt exist';
        }

        echo '<li>';
        echo $event['id'];
                echo '<a href="' . esc_url( $event['uri'] ) . '">' . $event['name'] . '</a>';
        echo '</li>';

        $new_post = array(
          'post_title' => $event['name'],
          'post_content' => 'description',
          'post_status' => 'publish',
          'post_author' => '2',
          'post_type' => 'post',
          'post_category' => array(1),
          'meta_input' => array(
            'hq_id' => $event['id'],
          )
      );
      //wp_insert_post($new_post); // commented out while testing the if statement.



        }
      echo '</ul>';
  }

?>
$body=wp\u remote\u retrieve\u body($request);
$data=json_解码(utf8ize($body),true);
$data_events=$data['events'];
如果(!空($data_事件)){
回声“
    ”; foreach($data\u事件作为$event){ //下面的if语句似乎破坏了下面的内容。 如果(post_存在($event['name'])==0){ 回声“存在”; }否则{ 回声“不存在”; } 回音“
  • ”; echo$event['id']; 回声'; 回音“
  • ”; $new\u post=数组( “post_title”=>$event['name'], “发布内容”=>“说明”, “发布状态”=>“发布”, “post_author”=>“2”, “post_type”=>“post”, “post_类别”=>数组(1), “元输入”=>数组( 'hq_id'=>$event['id'], ) ); //wp_insert_post($new_post);//在测试if语句时注释掉。 } 回声“
”; } ?>
编辑:请参阅$data\U事件数组:

试试这段代码。您需要包含此文件

因为
post_存在
功能将在管理页面上工作,而不是在前端

if ( ! is_admin() ) {
    require_once( ABSPATH . 'wp-admin/includes/post.php' );
}

$body = wp_remote_retrieve_body( $request ); 
$data = json_decode(utf8ize($body), true); 
$data_events = $data['events'];

if( ! empty( $data_events ) ) {
echo '<ul>';
    foreach( $data_events as $event ) {
    // the if statement below seems to break things ie. no li below printed.
    if ( post_exists( $event['name'] ) == 0 ) {
      echo 'doesnt exist';
    } else {
      echo 'exists';
    }

    echo '<li>';
    echo $event['id'];
            echo '<a href="' . esc_url( $event['uri'] ) . '">' . $event['name'] . '</a>';
    echo '</li>';

    $new_post = array(
      'post_title' => $event['name'],
      'post_content' => 'description',
      'post_status' => 'publish',
      'post_author' => '2',
      'post_type' => 'post',
      'post_category' => array(1),
      'meta_input' => array(
        'hq_id' => $event['id'],
      )
  );
  //wp_insert_post($new_post); // commented out while testing the if statement.



    }
  echo '</ul>';
}
如果(!is_admin()){
require_once(ABSPATH.'wp admin/includes/post.php');
}
$body=wp\u remote\u retrieve\u body($request);
$data=json_解码(utf8ize($body),true);
$data_events=$data['events'];
如果(!空($data_事件)){
回声“
    ”; foreach($data\u事件作为$event){ //下面的if语句似乎破坏了下面的内容。 如果(post_存在($event['name'])==0){ 回声“不存在”; }否则{ 回声“存在”; } 回音“
  • ”; echo$event['id']; 回声'; 回音“
  • ”; $new\u post=数组( “post_title”=>$event['name'], “发布内容”=>“说明”, “发布状态”=>“发布”, “post_author”=>“2”, “post_type”=>“post”, “post_类别”=>数组(1), “元输入”=>数组( 'hq_id'=>$event['id'], ) ); //wp_insert_post($new_post);//在测试if语句时注释掉。 } 回声“
”; }
试试这段代码。您需要包含此文件

因为
post_存在
功能将在管理页面上工作,而不是在前端

if ( ! is_admin() ) {
    require_once( ABSPATH . 'wp-admin/includes/post.php' );
}

$body = wp_remote_retrieve_body( $request ); 
$data = json_decode(utf8ize($body), true); 
$data_events = $data['events'];

if( ! empty( $data_events ) ) {
echo '<ul>';
    foreach( $data_events as $event ) {
    // the if statement below seems to break things ie. no li below printed.
    if ( post_exists( $event['name'] ) == 0 ) {
      echo 'doesnt exist';
    } else {
      echo 'exists';
    }

    echo '<li>';
    echo $event['id'];
            echo '<a href="' . esc_url( $event['uri'] ) . '">' . $event['name'] . '</a>';
    echo '</li>';

    $new_post = array(
      'post_title' => $event['name'],
      'post_content' => 'description',
      'post_status' => 'publish',
      'post_author' => '2',
      'post_type' => 'post',
      'post_category' => array(1),
      'meta_input' => array(
        'hq_id' => $event['id'],
      )
  );
  //wp_insert_post($new_post); // commented out while testing the if statement.



    }
  echo '</ul>';
}
如果(!is_admin()){
require_once(ABSPATH.'wp admin/includes/post.php');
}
$body=wp\u remote\u retrieve\u body($request);
$data=json_解码(utf8ize($body),true);
$data_events=$data['events'];
如果(!空($data_事件)){
回声“
    ”; foreach($data\u事件作为$event){ //下面的if语句似乎破坏了下面的内容。 如果(post_存在($event['name'])==0){ 回声“不存在”; }否则{ 回声“存在”; } 回音“
  • ”; echo$event['id']; 回声'; 回音“
  • ”; $new\u post=数组( “post_title”=>$event['name'], “发布内容”=>“说明”, “发布状态”=>“发布”, “post_author”=>“2”, “post_type”=>“post”, “post_类别”=>数组(1), “元输入”=>数组( 'hq_id'=>$event['id'], ) ); //wp_insert_post($new_post);//在测试if语句时注释掉。 } 回声“
”; }
前端通常不提供
post\u exists()
功能。您可以使用
get\u page\u by\u title
按标题查找文章,而不是包含另一个文件。只需测试
null
值,检查它是否不存在

替换

if ( post_exists( $event['name'] ) == 0 ) {

post\u exists()
功能通常在前端不可用。您可以使用
get\u page\u by\u title
按标题查找文章,而不是包含另一个文件。只需测试
null
值,检查它是否不存在

替换

if ( post_exists( $event['name'] ) == 0 ) {


post_存在必须参数1作为post title,因此请检查您是否正确获取它。?是,$event['name']是post title您可以发布$events数组吗?您是指$data_事件吗?请参见上面的编辑。您将此代码用于哪个钩子?尝试在echo“
  • ”之前添加die();post_存在必须参数1作为post title,因此请检查您是否正确获取它。?是,$event['name']是post title您可以发布$events数组吗?您是指$data_事件吗?请参见上面的编辑。您将此代码用于哪个钩子?尝试在echo“
  • ”之前添加die();