主题化全局变量-在index.php中初始化,但在header.pho中使用

时间:2017-02-09 作者:PKHunter

我需要初始化各种模板(索引、单个、页面)中的一些变量,例如该页面的横幅图像。然后在“get\\u header()”模板中使用该值。一个很好的例子是通常位于标题中的og\\U图像。HTML头部内的一组php元标记。此图像是任何给定模板页面的视觉别名。因此,获取此信息的最佳位置是在该模板的主循环上下文中。然而,og\\u图像标记本身并不在该模板(例如single.php)内,而是在标题内。php。

在single中将变量设置为“global”。php并没有帮助,因为这些并不像普通php那样是直接包含。它们在某种程度上更加特定于wordpress。

另一种选择是在函数内部执行一些黑魔法。php,但对于这种简单的东西,我宁愿不要过度使用某些函数。是否有一种更简单的方法或最佳实践可以在headed和footer以及提要栏中共享变量的值?

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

Using Custom Fields:
如果需要更具体的内容(可能是产品,其中每个页面都需要特定的图像),可以为每个页面使用自定义字段,例如og值:

1.-转到编辑页面,选中自定义字段复选框,以便在编辑器下方看到它

enter image description here

2.-输入新的自定义字段

enter image description here

enter image description here

应该是这样的name 是你的$key

enter image description here

3.-保存或更新页面。

4.-将此代码添加到函数中。php

function opengraph_tags() {

            /* we set the URL */
            $og_url = get_permalink();
            /* we set the site name */
            $og_site_name = get_bloginfo();
            /* we set the image */
            /* we check for a featured image */
            global $post;
            $og_img_src = wp_get_attachment_image_src(get_post_thumbnail_id($post->ID), \'medium\');
            $key = \'description\';
            /* MY CUSTOM VALUE I WANT TO PUT FROM THE CONTENT TO THE HEADER */
            $og_description = get_post_meta($post->ID, $key , true);

        ?>
        <meta property="og:description" content="<?php echo $og_description; ?>"/>
        <meta property="og:type" content="website" />
        <meta property="og:url" content="<?php echo $og_url ?>"/>
        <meta property="og:site_name" content="<?php echo $og_site_name ?>"/>
        <meta property="og:image" content="<?php echo $og_img_src[0]; ?>"/>
        <?php
    }

add_action(\'wp_head\', \'opengraph_tags\', 5);
你可以看到我正在用$key 它可以是您想要的任何内容,也可以获取您想要的所有自定义值,只要您创建了这些值,您也可以使用简单的if(empty($myValue)), 如果检查收割台,您将看到如下内容:

enter image description here

现在,如果您想在标题中使用其他值。php甚至页脚。php只需设置自定义字段并使用以下代码获取值:

<?php 
global $post;
$key = \'description\';
/* MY CUSTOM VALUE I WANT TO PUT FROM THE CONTENT TO THE HEADER */
$og_description = get_post_meta($post->ID, $key , true);
?>

SO网友:JVD

没有黑魔法,这是难以置信的简单。

function globalvariabletest() {
    global $testvar;
    $testvar = \'hello world\';
}
add_action( \'after_theme_setup\', \'globalvariabletest\' );

相关推荐

在带有PHP的子主题中包含style.css

在里面https://codex.wordpress.org/Child_Themes 这是包含样式的最佳实践。css在子主题中,必须将下面的代码放入函数中。php的子主题,但将“父样式”替换为可以在函数中找到的父主题的参数。父主题的php。我在我的主题文件中找不到它,那里也没有多少代码。使用@import包含父主题样式表的方法不适用于我,放入文件的css不会在任何浏览器的站点上显示自己。function my_theme_enqueue_styles() { $parent_s