【问题标题】:how to get all pages in WordPress when WPML plugin is activated?激活 WPML 插件后如何获取 WordPress 中的所有页面?
【发布时间】:2019-04-22 17:49:09
【问题描述】:

我正在开发 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/ url,但没有运气。

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

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

【问题讨论】:

    标签: wordpress wpml


    【解决方案1】:

    经过更多研究,我找到了合适的解决方案。 这是通过激活语言获取所有页面的代码。

    $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;
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-08-26
      • 2017-05-01
      • 1970-01-01
      • 2014-05-09
      • 1970-01-01
      • 2019-05-21
      • 1970-01-01
      相关资源
      最近更新 更多