get_post_type on post.php

时间:2012-01-26 作者:Jason Bahl

如何在post中获取post\\u类型。php页面?

我正在开发一个插件,允许用户创建新的帖子类型。然后,在新的帖子类型中,将添加一个带有一些选项的元框。要添加的元框基于创建新帖子类型时设置的某些参数。

因此,我需要检查post\\u类型是什么,如果它是某个post\\u类型,则会将某个元框添加到post编辑页面。

我可以使用以下方法添加新页面(post new.php):

$post\\U type=$\\U GET[\'post\\U type\'];

但这似乎没有得到帖子的类型。在新创建的帖子类型中编辑现有帖子时的php页面。

我也尝试过:

$post\\U type=get\\U post\\U type($post->ID);

$post\\U type=$post->post\\U type;

有什么想法吗?

编辑下面注释中的示例代码:

<?php 
$post_type = get_post_type($post->ID); 
$custom_query = new WP_Query(array( \'post_type\' => \'custom-types\', \'name\' => \'\'.$post_type.\'\', \'posts_per_page\' => 1 )); 
// STARTS THE LOOP 
while ($custom_query->have_posts()){ 
    $custom_query->the_post(); 
    // GETS POST META VARIABLES 
    global $post; 
    $title = get_the_title(); 
    $option_a = get_post_meta($post->ID, \'_option_a\', true); 
    $option_b = get_post_meta($post->ID, \'_option_b\', true); 
} 
?>
编辑此代码适用于新帖子。php文件:

但不是在岗位上。php文件。但是,当我手动填写name参数时,它会在帖子上起作用。php文件。

这个get_post_type($post->ID); 在帖子的元框中被忽略。php页面,所以它不是从带有post类型名称的帖子中提取数据,而是从最近的帖子中提取数据,就像我运行查询时根本没有name参数一样。

使用时编辑global $post; 没有从帖子的WP\\U查询中提取数据。php页面。

没有global $post; 最近的帖子是从WP\\u查询中提取的。

当我手动输入name参数时,它在post上运行良好。php页面。

按原样,该代码在新邮件上运行良好。php页面。

我试着浏览了这篇文章的源代码。php页面查看如何引用post\\u类型,但运气不好。弄清楚使用什么来获取帖子类型。

2 个回复
SO网友:Chip Bennett

为什么你不能全球化$post 然后获取帖子类型?e、 g。

<?php
global $post;
$post_type = get_post_type( $post->ID );
?>
您将此代码放在什么上下文中?在metabox回调中,还是什么?

(还有:为什么要使用$_GET 数据?)

SO网友:Jason Bahl

当我将循环更改为

<?php 
foreach ($custom_query as $custom) {
?>
而不是

<?php 
while ($defaulttheme_query->have_posts()){
    $defaulttheme_query->the_post();    
?>
一切都开始起作用了。

出于某种原因,post类型不会在“while”循环中回响,而是在“foreach”循环中回响。

结束

相关推荐

Communicate between plugins

我已经创建了两个WordPress插件。如果两个插件都安装了,那么这两个插件之间就可以进行一些有益的合作。那么我的问题是:让他们合作的最佳方式是什么?如何检测某个插件是否已启用?如何传输信息?我想我可以用globals,但有更好的方法吗?