当WPML插件被激活时如何获取WordPress中的所有页面?

问题描述 投票:0回答:1

我正在开发WordPress网站,因为我需要一个下拉列表,我可以加载所有可用的页面列表。

这是为我做的代码

$args = array(
    'sort_order' => 'ASC',
    'sort_column' => 'post_title',
    'post_type' => 'page',
    'post_status' => 'publish',
);
$pages = get_pages($args);

但是当WPML插件被激活时,我也有不同语言的页面。所以上面的代码只返回一种语言的页面列表,无论是英语还是意大利语。

我厌倦了找到一种方法来搜索WPML论坛的门票,但它们都是不推荐使用的功能,现在需要一个解决方案。我厌倦了https://wpml.org/forums/topic/show-all-pages-wp_list_pages/网址,但没有运气。

有什么好办法可以解决这个问题吗?

任何有关这方面的信息将不胜感激。谢谢!

wordpress wpml
1个回答
0
投票

经过更多的研究,我找到了一个合适的解以下是通过激活语言获取所有页面的代码。

$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;
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.