我有以下功能可以使用路径检查WordPress中是否存在该页面:
private function page_exists( $path ) {
$post_types = apply_filters( \'get_page_by_path_post_types\', [ \'page\', \'post\' ] );
foreach ( $post_types as $pt ) {
if( get_page_by_path( $path, OBJECT, $pt ) !== null ) {
return true;
}
}
return false;
}
问题是,在多站点中,该功能失败。我四处搜索,但找不到类似于get\\u page\\u by\\u path的多站点函数
最合适的回答,由SO网友:Pat J 整理而成
get_page_by_path()
将仅在当前网站中搜索。
如果您需要在多站点网络中的任何位置查找页面,可以执行以下操作。
function network_page_exists( $path ) {
$args = array(
// Max sites to retrieve.
// If you have a large network, increase this.
\'number\' => 100,
);
$sites = get_sites( $args );
$found = false;
foreach ( $sites as $site ) {
if ( ! $found ) {
switch_to_blog( $site->blog_id );
// Uses your page_exists() function in the sites
// till we find the post, or till we run out of sites.
$found = page_exists( $path );
restore_current_blog();
}
}
return $found;
}
Note: switch_to_blog()
如果你有一个大的网络,你的网站会变慢。您可能希望研究如何缓存结果(可能使用选项)。因为这取决于你的具体情况,所以这个答案没有提到。
switch_to_blog()
restore_current_blog()