创建的页面未显示在“所有页面”列表中

时间:2019-04-05 作者:GigiSan

由于一些自定义软件集成,我让我的主题使用设置的模板自动生成一些页面,以实现所需的功能。

我使用以下脚本来实现这一点:(页面名称是虚构的,但很真实)

function xc_add_custom_pages() {
    // Get pages list, function below
    $pageList = xc_get_custom_page_list();

    foreach ($pageList as $customPage)
    {
        // Check page existence
        if(   !empty($customPage[\'title\']) 
           && !empty($customPage[\'template\']) 
           && !get_page_by_title($customPage[\'title\'])) {
            $pageParams = array(
                \'post_type\'    => \'page\',
                \'post_title\'    => $customPage[\'title\'],
                \'post_content\'  => \'\',
                \'post_status\'   => \'publish\',
                \'post_author\'   => 1
            ); 
            // Set sutom slug if required
            if ($customPage[\'slug\']) {
                $pageParams[\'post_name\'] = $customPage[\'slug\'];
            }
            // Set sutom template if required
            if ($customPage[\'template\']) {
                $pageParams[\'page_template\'] = $customPage[\'template\'];
            }
            // Create the page
            $customPage[\'id\'] = wp_insert_post( $pageParams );
        }
    }
}
add_action(\'after_setup_theme\', \'xc_add_custom_pages\');

function xc_get_custom_page_list() {
    return array(
        array(
            \'title\' => \'Product registration\',
            \'template\' => \'page-templates/tpl-regprod.php\',
            \'slug\' => \'product-registration\'
        ),
        array(
            \'title\' => \'Private area\',
            \'template\' => \'page-templates/tpl-private-area.php\',
            \'slug\' => \'private-area\'
        ),
        array(
            \'title\' => \'Assistance report\',
            \'template\' => \'page-templates/tpl-asst-report.php\',
            \'slug\' => \'assistance-report\'
        ),
        // more pages...
    );
}
昨天已经创建了页面,直到今天都可以在列表中看到。今天,我发现包括自定义页面在内的总页面数正确,但无论我单击什么过滤器(“包括所有”),我都只能看到在脚本之前创建的页面。

Pages list

我甚至试着点击Tutti (全部)并切换到All languages 在WPML中,但我被送回了11个意大利语页面。我的自定义页面似乎“没有语言”,但我不应该在中看到它们吗All languages 然后

为什么页面“取消列表”?有没有办法把它们列出来?提前感谢您的时间。祝你今天愉快!

1 个回复
最合适的回答,由SO网友:GigiSan 整理而成

问题实际上是页面“没有语言”,WPML似乎讨厌这样。

因此,我只是删除了所有这些页面,并使用适当的WPML语言属性重新插入它们:

// (...)

// Create the page
$customPage[\'id\'] = wp_insert_post( $pageParams );

// Check if WPML parameters are needed
if (has_action(\'wpml_set_element_language_details\')) {
    // Set WPML parameters
    $set_language_args = array(
        \'element_id\'    => $customPage[\'id\'],
        \'element_type\'  => apply_filters( \'wpml_element_type\', \'page\' ),
        \'trid\'   => FALSE, // new translation id
        \'language_code\'   => \'it\',
        \'source_language_code\' => NULL
    );
    do_action( \'wpml_set_element_language_details\', $set_language_args );
}
这解决了我的问题。

相关推荐

echo plugin results on pages

我正试图通过插件在wordpress的前端得到一个可以回应的查询,但没有太大成功。我们将不胜感激。下面是我使用的简单脚本: function getPageIDs() { include_once($_SERVER[\'DOCUMENT_ROOT\'].\'/stage/wp-config.php\' ); global $wpdb; $row = $wpdb->get_row( \'SELECT p