【问题标题】:WPML and custom post types archive templateWPML 和自定义帖子类型存档模板
【发布时间】:2014-03-05 02:36:46
【问题描述】:

我正在使用 WPML 3.0.2-a 和 WordPress 3.8.1

我有一个这样定义的自定义帖子类型:

function add_custom_posts(){
    $args = array(
            'labels' => array(
                    'name' => __( 'Showcases' ),
                    'singular_name' => __( 'Showcases' ),
                    'add_new_item' => __( 'Add New Showcase'),
                    'edit_item' => __( 'Edit Showcases' ),
                    'view_item' => __( 'View Showcase' ),
                    'search_items' => __( 'Search Showcases' ),
                    'not_found' => __( 'No Showcases found.' ),
                    'not_found_in_trash' => __( 'No Showcases found in Trash.' )
            ),
            'public' => true,
            'has_archive' => 'case-studies',
            'menu_position' => 5,
            'taxonomies' => array('post_tag'),
            'supports' => array( 'title', 'thumbnail', 'editor', 'excerpt', 'page-attributes' ),
            'rewrite' => array('slug' => 'case-studies', 'with_front' => false),
            'capability_type' => 'post',
            'hierarchical' => false,
        );

    register_post_type('showcases', $args);

}

add_action( 'init', 'add_custom_posts', 100 );

访问自定义帖子类型存档和默认语言的单个帖子 URL 可以正常工作。例如:

/case-studies/ 
/case-studies/%postname%/

工作完美,展示了他们应该做的事情。

但是,它不适用于其他语言:

/de/case-studies/ 
/de/case-studies/%postname%/

都显示 WordPress 主题的 index.php 模板。它实际上是 404 页面,但由于我们没有 404.php,所以使用 index.php。

展示文章类型在 WPML 设置中可翻译。

您知道这是为什么以及如何解决吗?

【问题讨论】:

    标签: php wordpress custom-post-type wpml


    【解决方案1】:

    我找到了this support thread,他们说应该更改以下行(在您的代码中):

    'has_archive' => 'case-studies',
    

    到:

    'has_archive' => icl_translate('wpml_custom', 'wpml_custom_showcases', 'case-studies'),
    

    请求官方支持可能是个好主意,因为它是商业软件,没有可用的文档。

    【讨论】:

    • 不幸的是它没有帮助。 :(你还有其他想法吗?
    • 完美运行!确保您的参数与register_post_type 中的参数匹配——这可能是为什么这对 Aleksandar 不起作用。它应该是“展示”,而不是“案例研究”。
    【解决方案2】:

    我发现了问题所在。

    该字符串未在 WPML 下翻译 -> 字符串翻译

    当我翻译它(case-studies -> de/case-studies)时,它起作用了。

    实际上,它适用于所有变体 - 我的原始代码和答案中建议的代码。

    【讨论】:

      【解决方案3】:

      我认为这对你有用,只是缺少一些操作:)

      'has_archive' => 'case-studies',

      'has_archive' => icl_translate('wpml_custom', 'wpml_custom_showcases', 'case-studies'),

      那么

      转到设置 > 永久链接并点击“保存”。

      让我知道这是否完美。

      干杯!

      【讨论】:

      • 看看这个线程怎么样:wpml.org/forums/topic/… 并使用 rewrite for slug 代替。让我知道这是否有帮助;)
      【解决方案4】:

      你试过了吗

      'has_archive' => true
      

      ?

      如果我理解正确,应该可以按需要工作。

      【讨论】:

      • 不,没有帮助。一定是别的东西。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-17
      • 2011-12-16
      • 2015-02-12
      • 1970-01-01
      • 2023-03-22
      相关资源
      最近更新 更多