if:false时如何获得下一个$ args?

时间:2018-06-05 15:41:55

标签: php if-statement

我是编程新手......(绝对关于编程的问题,但我使用wordpress)我试着非常清楚:

我有一个基于子域的多站点网络。如果用户发布到他们的网站,我会从当前帖子到我的网络主页进行克隆。这个克隆有一个规范网址,原始帖子显示的内容,以及帖子也是同意的(ID不会。)

示例:x用户发布:

   url: xusersite.network.com/4243345/this-is-slug-by-post-title
   canonical: xusersite.network.com/4243345/this-is-slug-by-post-title

我明白了:

   url: network.com/123677745/this-is-slug-by-post-title
   canonical: xusersite.network.com/4243345/this-is-slug-by-post-title

现在我希望在子网站上通过原始帖子获取克隆帖子的ID ...所以我有这样的代码:

   switch_to_blog( 1 );
   $canonical = 'xusersite.network.com/4243345/this-is-slug-by-post-title';
   $slug = 'this-is-slug-by-post-title'; // current slug
   $args = array(
     'name'        => $slug,
     'post_type'   => 'post',
     'post_status' => 'publish',
     'numberposts' => 1
   );
   $my_posts = get_posts($args);

多数民众赞成,但问题是,如果另一个用户为他的博客发布了相同的标题,例如:y用户发布:

   url: yusersite.network.com/72543/this-is-slug-by-post-title
   canonical: yusersite.network.com/72543/this-is-slug-by-post-title

我得到一个帖子,同样的slu ::

   url: network.com/776536556733/this-is-slug-by-post-title
   canonical: yusersite.network.com/72543/this-is-slug-by-post-title

所以我的PHP知识就在这里,我可以这样做:

   if( $my_posts ) :
     $cloneid = $my_posts[0]->ID;
     $clonecanonical = wp_get_canonical_url( $cloneid );
     if( $clonecanonical == $canonical ) :
     $exit = 'true';
     else : 
     $exit = 'false';
     endif;
   endif;

如果$ exit为false,我如何获得下一个$ my_posts,所以$ my_posts [1] - > ID?我怎样才能获得正确的$ my_posts?

1 个答案:

答案 0 :(得分:0)

不确定已经理解,但是您应该使用count($ my_posts)获取帖子中的帖子数量,然后使用for或while来遍历完整的$ my_posts。

类似的东西:

    if( $my_posts ) :
    $numPosts=count($my_posts)
    //if $numPosts = 0 then $my_posts[0] does not exist
    //but if you are here $numPosts must be > 0
    if $numPosts > 0 {
        for ( $i = 0; $i < $numPosts; $i++ ){
            $cloneid = $my_posts[$i]->ID;
            $clonecanonical = wp_get_canonical_url( $cloneid );
            if( $clonecanonical == $canonical ) :
        $exit = $my_posts[$i]->ID;
    endif;
        }
    }
    endif;