自定义帖子类型functions.php if 操作语句

发布于 2024-11-03 19:31:32 字数 665 浏览 0 评论 0原文

我正在为 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)

I am using developing a child theme for Woothemes' Canvas.

I am trying to use functions.php in the child theme to only use actions on my custom post type.

This code doesn't seem to be working:

 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
       }
}

So, I'm unsure how to get the above to work properly and only show these items on the custom post type, or only for the custom post type template single-listings.php (as I only want the map and slider to show on the actual post, not on the blog page (archive.php)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

老娘不死你永远是小三 2024-11-10 19:31:32

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

我不太确定该函数正在加载的位置,但请确保您在帖子中的某个位置进行了挂钩。如果操作发生在之前,据我所知和经验,post 变量将为空。

作为测试,尝试在 wp_footer Ex 中运行操作。 add_action( 'wp_footer', 'listings_nivo' );
看看是否会产生任何结果。

如果 echoing var_dump($post) 仍然为空,那么,不知道从那里去哪里。

因此,您可以尝试运行以下命令,然后在适当的位置运行该操作(如果有效):

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,以查看是否发生了其他情况。

祝你好运!

Rather than making the entire $post object global, you can just make $post_type global instead. Ex below.

I'm not exactly sure where that function is being loaded, but make sure you hook somewhere within the post. If the action is before, as far as I know and from experience, the post variable will be null.

Just as a test, try running the action in wp_footer Ex. add_action( 'wp_footer', 'listings_nivo' );
See if that yeilds any results.

if echoing var_dump($post) is still null, well, not sure where to go from there.

So you can try running the below, then run the action in the appropriate place if it works:

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' );

Check your error log or turn wp_debug to true in your wp-config.php file if nothing else to see if anything else is going on.

Best of luck!

冰葑 2024-11-10 19:31:32

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

Inside your function, try adding global $post;. Then to see what you are getting with $post->post_type echo it out to the screen. As long as this gives you "listings", your code should work. If not, there's probably another issue at play.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文