从类方法检测当前页面

时间:2016-04-28 作者:Ian Svoboda

我试图寻找一个关于这个主题的具体答案/教程,但我很简短,想看看SE社区能提供什么建议。在这一点上,任何指导都是非常感谢的。

基本上,我试图确定当前页面在我正在设置的类方法中被查看,但到目前为止我还没有任何运气如果满足适当的条件,可以将脚本/样式排队:启用功能并将其设置为所有页面,或者启用功能并将其设置为显示在当前查看的页面上

以下是我一直在研究的最新版本的代码:

<?php    

if( !class_exists(\'CTA_Modal\') )
{    


    Class CTA_Modal {    

        public $current_post;    

        public function __construct($post_id) 
        {
            $this->current_post = $post_id;
            // $this->load_feature();   
        }    

        public function load_feature()
        {
            $modal_display = array(
                \'enabled\'   => true,
                \'all_pages\' => true,
                \'pages\'     => array()
            );    

            $modal_display[\'enabled\']   = get_field(\'ctamodal_enabled\', \'options\');
            $modal_display[\'all_pages\'] = get_field(\'ctamodal_show_all\', \'options\');
            $modal_display[\'pages\']     = ( $modal_display[\'all_pages\'] ) ? array() : get_field(\'ctamodal_show_pages\', \'options\');    

            if( $modal_display[\'enabled\'] )
            {    

                if( $modal_display[\'all_pages\'] ) 
                {
                    add_action( \'wp_enqueue_scripts\', array($this, \'enqueue\') );
                }
                else if( !empty($modal_display[\'pages\']) ) 
                {
                    $pages = $modal_display[\'pages\'];    

                    foreach ($pages as $page) {
                        if( $page === $this->current_post )
                        {
                            add_action( \'wp_enqueue_scripts\', array($this, \'enqueue\') );        
                        }
                    }    

                }

            }
            echo \'<!--\';
            echo $this->current_post;
            echo \'-->\';
        }    

        public function enqueue()
        {
            $vendor = get_stylesheet_directory_uri() . \'/vendor\';
            wp_enqueue_style(\'fancybox-css\', $vendor . \'/fancybox/jquery.fancybox.css\');
            wp_enqueue_script(\'fancybox-js\', $vendor . \'/fancybox/jquery.fancybox.js\', array(\'jquery\'), \'2.1.5\');   
        }    

    }    

}
我似乎不明白为什么要宣布global $post; 也没有预期的效果。我最初是在这个文件(即上面的代码所在的文件)和函数中声明全局并重置查询权限。php文件,但我无法得到不同的结果。

如有任何建议/指导,将不胜感激!

2 个回复
最合适的回答,由SO网友:Ian Svoboda 整理而成

https://wordpress.stackexchange.com/a/199997/86773

正如这里建议的那样,将挂钩切换到“wp”而不是“init”,这样我就可以使用is\\u page()进行页面比较。

SO网友:sălă

你试过了吗get_the_ID 作用

尝试this 一个用来获取ID,然后你可以获得你想要的所有信息。有帮助吗?

相关推荐

WooCommerce:Pre_Get_Posts中的复杂查询

我想在获取产品时添加一个复杂的过滤。我有一些产品,其中一些链接到自定义帖子类型</此自定义帖子类型有一个转发器字段根据cookie的不同,我应该只获取在此转发器字段中具有该值的产品,我知道我可以使用:add_filter( \'pre_get_posts\', \'fwp_archive_per_page\' ); 我知道我可以像这样设置额外的元查询:$query->set( \'meta_query\', array( \'relation\' => \'