自定义帖子类型functions.php if action on action

时间:2011-04-27 15:58:20

标签: wordpress function action custom-post-type

我正在为Woothemes'Canvas开发儿童主题。

我试图在子主题中使用functions.php仅对我的自定义帖子类型使用操作。

此代码似乎不起作用:

 add_action( 'woo_post_inside_after', 'my_geo_mashup' );
function my_geo_mashup() {
       echo GeoMashup::map();
    if ($post->post_type == 'listings') {
        //My function
       }
}

add_action( 'woo_post_inside_before', 'listings_nivo' );
function listings_nivo() {
echo do_shortcode('[nivo source="current-post" ]');
 if ($post->post_type == 'listings') {
        //My function
       }
}

所以,我不确定如何让上面的内容正常工作,只在自定义帖子类型上显示这些项目,或者仅针对自定义帖子类型模板single-listings.php(因为我只想要地图和滑块)显示在实际帖子上,而不是在博客页面(archive.php)上显示

2 个答案:

答案 0 :(得分:0)

在您的功能中,尝试添加global $post;。然后通过$post->post_type查看您获得的内容,将其回显到屏幕上。只要这给你“列表”,你的代码应该工作。如果没有,可能还有另一个问题在起作用。

答案 1 :(得分:0)

不是将整个$ post对象设为全局,而是可以将$ post_type设为全局。在下面。

我不确定该函数的加载位置,但请务必在帖子中的某处挂钩。如果操作在之前,据我所知和经验,post变量将为null。

就像测试一样,尝试在wp_footer Ex中运行该操作。 add_action('wp_footer','listings_nivo'); 看看是否有任何结果。

如果回显var_dump($ post)仍为null,那么,不确定从那里开始。

因此,您可以尝试运行以下内容,然后在适当的位置运行操作:

function listings_nivo() {
    echo do_shortcode('[nivo source="current-post" ]');
    global $post_type;
        // Diagnostic purposes
    echo var_dump($post_type);
    if ($post_type == 'listings') {
            //My function
    }
}
add_action( 'wp_footer', 'listings_nivo' );

检查您的错误日志或在wp-config.php文件中将wp_debug变为true,如果没有其他内容可以查看是否还有其他内容。

祝你好运!