激活 WPML 插件后如何获取 WordPress 中的所有页面?
how to get all pages in WordPress when WPML plugin is activated?
我正在开发 WordPress 网站,因此我需要一个下拉菜单,我可以在其中加载所有可用页面列表。
这是为我做的代码
$args = array(
'sort_order' => 'ASC',
'sort_column' => 'post_title',
'post_type' => 'page',
'post_status' => 'publish',
);
$pages = get_pages($args);
但是当 WPML 插件被激活时,我也有不同语言的页面。所以上面的代码只有 returns 一种语言的页面列表,英语或意大利语。
我厌倦了在 WPML 论坛的票证中搜索的方法,但它们都是不推荐使用的功能,现在需要一个解决方案。
我厌倦了 https://wpml.org/forums/topic/show-all-pages-wp_list_pages/ url 但运气不好。
有什么好的方法可以解决这个问题吗?
如有任何相关信息,我们将不胜感激。谢谢!
经过更多研究,我找到了合适的解决方案。
这是通过激活语言获取所有页面的代码。
$all_pages = array();
$languages = apply_filters( 'wpml_active_languages', NULL, array( 'skip_missing' => 0));
foreach( (array) $languages as $lang ) {
/* change language */
do_action( 'wpml_switch_language', $lang['code'] );
/* building query */
$posts = new WP_Query( array(
'sort_order' => 'ASC',
'sort_column' => 'post_title',
'post_type' => 'page',
'posts_per_page' => -1,
'post_status' => 'publish',
) );
$posts = $posts->posts;
foreach( (array) $posts as $post ) {
$all_pages[esc_url(get_page_link($post->ID))] = $post->post_title;
}
}
我正在开发 WordPress 网站,因此我需要一个下拉菜单,我可以在其中加载所有可用页面列表。
这是为我做的代码
$args = array(
'sort_order' => 'ASC',
'sort_column' => 'post_title',
'post_type' => 'page',
'post_status' => 'publish',
);
$pages = get_pages($args);
但是当 WPML 插件被激活时,我也有不同语言的页面。所以上面的代码只有 returns 一种语言的页面列表,英语或意大利语。
我厌倦了在 WPML 论坛的票证中搜索的方法,但它们都是不推荐使用的功能,现在需要一个解决方案。 我厌倦了 https://wpml.org/forums/topic/show-all-pages-wp_list_pages/ url 但运气不好。
有什么好的方法可以解决这个问题吗?
如有任何相关信息,我们将不胜感激。谢谢!
经过更多研究,我找到了合适的解决方案。 这是通过激活语言获取所有页面的代码。
$all_pages = array();
$languages = apply_filters( 'wpml_active_languages', NULL, array( 'skip_missing' => 0));
foreach( (array) $languages as $lang ) {
/* change language */
do_action( 'wpml_switch_language', $lang['code'] );
/* building query */
$posts = new WP_Query( array(
'sort_order' => 'ASC',
'sort_column' => 'post_title',
'post_type' => 'page',
'posts_per_page' => -1,
'post_status' => 'publish',
) );
$posts = $posts->posts;
foreach( (array) $posts as $post ) {
$all_pages[esc_url(get_page_link($post->ID))] = $post->post_title;
}
}