GET_POST_TYPE()和WP_Query问题

时间:2013-01-17 作者:Syed

我对WP\\U查询有问题,我的场景:a)使用http://wordpress.org/extend/plugins/countries/b) 仅使用WP\\U查询获取国家及其代码。c) 正确重置查询。d) 使用自定义帖子类型e)使用元框sf)使用get\\u post\\u type()检索自定义帖子类型。

以下是代码片段:

$query_args = array(
    \'post_type\' => \'countries\',
    \'posts_per_page\' => -1,
    \'post_status\' => \'publish\'
);
$countries_query = new WP_Query($query_args);
$countries_array = array();
if ($countries_query->have_posts()):
    while ($countries_query->have_posts()) :
        $countries_query->the_post();
        $country_meta = get_post_custom($post->ID);
        $country_code = $country_meta[\'country_code\'][0];
        //$countries_array[$country_code] = $post->post_name;
        $countries_array[$country_code] = $post->post_title;
    endwhile;
endif;
wp_reset_postdata();
/*
 * sorting countries alphabatically, keeps keys intact with "ksort"
 */
ksort($countries_array);
$GLOBALS[\'custom_countries\'] = $countries_array;
我正在将元框添加到我的自定义帖子类型中,使用

if (get_post_type() == \'my_custom_post_type\'): 
add_my_meta_box_for_custom_post_type();
endif;  
get\\u post\\u type()返回“countries”,而不是全局$post,在本例中,全局$post是我的“my\\u custom\\u post\\u type”。

我的代码有什么问题吗?????

请仅在您有具体答案而非一般答案或推测时回复。

2 个回复
SO网友:s_ha_dum

如果你look at the source 以及Codex page 对于get_post_type 您将看到,除非向其传递post ID或post对象,否则它将返回“当前post”的类型。get_post_type 如果您在WordPress为帖子类型生成的帖子编辑页面上运行该代码,则无需参数即可工作。任何其他地方,这是不保证的。因为您的问题没有包含足够具体的信息,所以无法向您提供详细信息,但我相当肯定这就是您在代码方面遇到的问题。

也就是说,@WPThemes是对的。无需进行检查。这个答案可能会帮你解决问题(所以选择它)。

其他注意事项:如果您在注册帖子类型时在回调中注册元盒(@WPThemes’answer),则可以不使用is_admin 检查这些箱子将在需要时登记。您还可以直接连接到add_meta_boxes_{post-type}.

SO网友:WP Themes

您无需检查自定义帖子类型即可添加元框。只需指定要在其上运行add\\u meta\\u box()函数的自定义帖子类型。类似这样:

add_action(\'add_meta_boxes\', \'add_my_meta_box\' );
/**
 * Add meta box only to my custom post type
 */
function add_my_meta_box(){
    $my_custom_post_type = \'my_custom_post_type\';
    add_meta_box( \'my-meta-box-id\', \'Title of my Meta Box\', \'my_callback_function\', $my_custom_post_type, \'normal\', \'high\' );
}

/**
 * Shows the meta box options
 */
function my_callback_function(){
    /** Display your meta box options/fields **/
}

结束

相关推荐

Wp-content/plugins中的权限问题

我在本地机器上安装了一个WP,试图用插件弄脏我的手。我希望从github克隆一个包含此插件代码的项目。然而,我没有插件内部的权限,作为一个没有su权限的普通用户,我无法做到这一点。(当然,我可以成为根并这样做,但我不认为这是应该的)。然后,默认情况下,WP安装中的文件夹将组设置为“tape”,这对我来说很奇怪。本地WP安装上内部文件夹的正确权限应该是什么?