使用strpos检查“Gallery”快捷代码总是返回FALSE

时间:2013-07-22 作者:Joy

我想根据[gallery] 短代码用于帖子中。我是这样做的(based on):

function doraemon_scripts() {

    if( is_single() ) {

        if (strpos($post->post_content,\'[gallery\') === false){
        } else {
            wp_enqueue_style( ... );
            wp_enqueue_script( ... );
        }

    }

}
add_action( \'wp_enqueue_scripts\', \'doraemon_scripts\' );
但问题是,样式表和脚本似乎没有排队,strpos 总是返回false。我到底做错了什么?

1 个回复
最合适的回答,由SO网友:s_ha_dum 整理而成

您将需要global $post 获取$post 该函数范围内的变量。

function doraemon_scripts() {

    if( is_single() ) {
      global $post;
        if (strpos($post->post_content,\'[gallery\') === false){
        } else {
//             wp_enqueue_style( ... );
//             wp_enqueue_script( ... );
        }

    }

}
add_action( \'wp_enqueue_scripts\', \'doraemon_scripts\' );
使用$post 循环外的全局并不总是可靠的,但WordPress会将该变量设置为结果集中的第一篇文章,这将是单个帖子页面上的正确文章,但在其他页面上不会正确。

当然,如果其他东西改变了全局,那么这是行不通的,而且你也不能总是预测插件会做什么以及在哪里。

您使用。。。

global $wp_query;
$post = $wp_query->posts[0];

结束

相关推荐

Image Gallery Numbers for 3.5

在以前安装的WordPress中,可以在attachment.php 使用下面最初提供的代码here. 然而,我发现这个代码不再有效,因为图像编号不准确。是否有新代码可用?<?php global $post; $ancestors = get_post_ancestors($post->ID); $photos = get_children(array( \'post_mime_type\' => \'image\', \'