首页 > 解决方案 > 从 WordPress DB 检查元值不适用于页面

问题描述

我希望在用户选择某个页面模板时创建一个 CPT(投资组合)。

这是我到目前为止的代码,适用于帖子:

$posts_with_meta = get_posts(array(
    'posts_per_page' => 1,
    'meta_key' => '_wp_page_template',
    'meta_value' => 'portfolio.php',
    'fields' => 'ids',
));

if (count($posts_with_meta)) {
    function spx_pt_portfolio()
    {
        register_post_type('portfolio',
            array(
                'labels' => array(
                    'name' => __('Portfolio'),
                    'singular_name' => __('Portfolio'),
                ),
                'public' => true,
                'has_archive' => true,
                'supports' => array('title', 'editor', 'thumbnail', 'custom-fields', 'revisions'),
            )
        );
    }

    add_action('init', 'spx_pt_portfolio');
}

出于某种原因,此代码仅适用于帖子。当我在页面上选择页面模板“投资组合”时,没有任何反应。

标签: phpdatabasewordpress

解决方案


不确定我是否完全理解您要执行的操作,但您可能正在使用 get_posts() 并且需要在页面上使用 get_pages()。


推荐阅读