创建插件以在每个页面上显示弹出横幅

时间:2018-07-18 作者:S. Jensen

8月份,GDPR要求所有网站在每个页面上都有一个cookie通知。我正在创建一个自定义的帖子类型插件,但我有一个问题。自定义帖子类型页面中的内容没有被拉入,而是从其所在页面中拉入内容。如果我点击通知页面的永久链接,内容将完全按照我的要求显示。我的猜测是,因为插件位于每个页面的“the\\u content();”从他们所在的页面中提取内容。我需要知道如何解决这个问题。

这是代码。

插件代码:

<?php

/**
* Plugin Name: GDPR Cookie Notice
* Description: Adds a Pop-up notice bar on the bottom of the page for GDPR notifications
**/

defined( \'ABSPATH\' ) or die( \'You Shall Not Pass!\' );

function gdpr_create_post_type(){
    $labels = array(
        \'name\'               => \'GDPR Notice\', // => seperator for associative array key => value
        \'singular_name\'      => \'GDPR Notice\',
        \'add_new\'            => \'Add New\',
        \'add_new_item\'       => \'Add New GDPR Notice\',
        \'edit_item\'          => \'Edit GDPR Notice\',
        \'new_item\'           => \'New GDPR Notice\',
        \'view_item\'          => \'View GDPR Notices\',
        \'search_items\'       => \'Search GDPR Notices\',
        \'not_found\'          => \'No GDPR Notices Found\',
        \'not_found_in_trash\' => \'No GDPR Notices Found in Trash\'
    );
    $args = array(
        \'labels\'             => $labels,
        \'has_archive\'        => false, // these will be used in pages
        \'public\'             => true,
        \'hierarchical\'       => true, // behave like a page
        \'rewrite\'            => array(
            \'with_front\'     => false,
            \'slug\'           => \'gdpr-notice\'
        ),
        \'menu_icon\'          => \'dashicons-id-alt\',
        \'supports\'           => array(
            \'title\',
            \'author\',
            \'editor\',
            \'custom-fields\',
            \'page-attributes\'
        )
    );
    register_post_type(\'gdpr\', $args);
}
add_action(\'init\', \'gdpr_create_post_type\');
?>

标题。拉入单页模板的PHP文件:

<header>
    ... main navigation code ...
</header>

<?php get_template_part(\'single\', \'gdpr\'); ?>
单一GDPR。PHP文件:

<?php 
/* 
The file for the GDPR Cookie Notice post type, registered via a plugin
*/
?>
<div class="cookie-bar">
    <section class="section float-me me-floated">
        <div class="container">
            <div class="row text-center">

                <!-- I\'ve added both editor and custom field filters to see if I can get even one to work -->

                <?php if ( have_posts()) :
                    while ( have_posts()) : the_post(); 

                        the_content();

                    endwhile; 
                endif; ?>

                <?php if ( have_posts()) :
                    while ( have_posts()) : the_post(); 

                        echo get_post_meta($post->ID, \'notice\', true);

                    endwhile; 
                endif; ?>

            </div>
        </div>
    </section>
</div>
WP ADMIN-GDPR通知自定义帖子类型页面

我正在尝试两种选择——只是想看看我是否能找到一种

WP编辑:阅读我们的隐私政策,了解我们如何使用cookie的更多信息。

自定义字段:名称:noticeValue:阅读我们的隐私政策以了解有关如何使用Cookie的更多信息。

谢谢你的帮助。

2 个回复
最合适的回答,由SO网友:S. Jensen 整理而成

我决定调用MySQL数据库,并在单个gdpr中提取该信息。php模板,所以用数据库调用替换WordPress循环。

<?php

    $table_prefix  = \'###_\';
    $startat = \'englishnotice\'; // English Custom Field Name
    $sitepostmeta = $table_prefix . \'postmeta\';

    $posts = $wpdb->get_results("SELECT meta_value FROM $sitepostmeta WHERE meta_key = \'$startat\'");

    echo $posts[0]->meta_value;

?>

SO网友:Rick Hellewell

我使用一些javascript代码弹出消息,并将其放在我的“Simple GDPR”插件中https://wordpress.org/plugins/simple-gdpr/ .

我从https://cookieconsent.insites.com/ , 详细说明了如何操作。

我使用了“after\\u header”操作,如

add_action(\'after_header\', \'my_gdpr_notice\');
要显示通知,请使用\'enqueue_scripts\' 用于为消息添加javascript代码和关联CSS的函数。

结束