我是编程新手......(绝对关于编程的问题,但我使用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?
答案 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;