【问题标题】:Including Custom Fields & static text in the_content in WordPress在 WordPress 的 the_content 中包含自定义字段和静态文本
【发布时间】:2011-09-04 21:23:28
【问题描述】:

我正在编辑自定义帖子类型模板,并使用自定义字段将信息输入到要包含在页面上的元框,并在所有页面上包含一些静态默认文本。

我基本上需要将 the_content 中的帖子信息与静态文本和一些元框信息“分块”在一起。这就是我想要的:

  • the_content
  • 静态文本
  • 元框 1
  • 更多静态文本
  • 元框 2
  • _content 结束

我有插件,在 the_content 之前添加社交按钮,在 the_content 之后添加签名,所以我试图弄清楚如何将我所有的自定义内容夹在它们之间。

如果我只是在模板中添加元框,它们会显示在 the_content 之外,而插件会显示在不需要的地方。

【问题讨论】:

    标签: wordpress custom-fields


    【解决方案1】:

    我最终自己解决了这个问题。解决方案:使用functions.php和add_filter,我必须创建一个新函数来创建默认内容,而且效果很好。

    这里是任何有兴趣的人的通用代码:

    function custom_post_type_default_content($content) {
    global $post;
        if ($post->post_type == 'your-custom-post-type') {
        $content .= '<p> '. get_post_meta( $post->ID, "metabox-1-slug", true ).' 
        <br />
        <p> '. get_post_meta( $post->ID, "metabox-2-slug", true ).'</p>
        <p>YOUR TEXT HERE.</p>';
    }
    add_filter('the_content', 'custom_post_type_default_content', 0);
    

    请注意,靠近末端的零控制放置。我有一个优先级为“1”的社交媒体插件,要让默认内容出现在上面,我必须将其设为“0”优先级。

    还要注意在$content .= 之后打开和关闭代码的单撇号

    您基本上可以在这些撇号之间添加您想要的任何内容,在这种情况下,我正在提取元框信息,这些信息有自己的包含代码的撇号。变得混乱了!

    换句话说,您的代码应该是 $content .='YOUR CUSTOM CONTENT',并在这些撇号中添加您的文本、代码等。独立元框代码是 '. get_post_meta( $post-&gt;ID, "metabox-1-slug", true ).',它嵌套在您的自定义内容文本所在的位置。

    我基本上是在向自己解释这一点,因为这些是让我绊倒的事情,所以我想详细解释它们以帮助像我这样的其他人。或者当我必须再次查找时我!

    【讨论】:

    • 此外,一旦我发现我需要在 functions.php 中执行此操作,就需要感谢帮助我推断代码语法的人 - wordpress.stackexchange.com/questions/28663/…
    • 使用这个时,我不得不从钩子函数中返回$content,这在评论中的链接中明确指出,但在这个答案中没有。
    【解决方案2】:

    在此处或在 pastebin 上发布您的 single.php 以及您正在使用的自定义字段名称(以及您想要它们的位置),我会尽力帮助您弄清楚您想要什么。

    【讨论】:

    • 非常感谢。我的 single.php 在这里(这是一个自定义帖子类型的单页,并使用子主题):pastebin.com/S7cLHZND
    • 我在整个正文文本模板中使用了一些自定义字段来自动填充某些段落以使其特定于页面。我基本上是在尝试让标题、副标题、特色图片、价格和一些带有内联元框内容的静态文本按顺序出现在 the_content 中。我还在使用 PayPal 立即购买按钮,该按钮被放置在主体内容中,并希望接近价格。
    • 一切正常,但社交媒体按钮和页脚文本插件显示了我在模板中编码的元框内容下方的所有内容。我试过用functions.php做,但没有用;我可能做错了。
    • 这不是答案,应该是评论。尽管如此,cmets 仍包含一些可能有用的信息。 @GeorgeC,请编辑您的问题并添加您在此处输入的详细信息。然后我认为我们可以要求马特删除这个答案,因为它是社区所说的“不是答案”(如前所述,它应该是评论)。谢谢!
    【解决方案3】:

    将此代码复制到您的 function.php 文件中。

    function content_function_update($content) {
    
        global $wp_query, $post;
    
        if ($post->post_type == 'your-custom-post-type') {
    
           $postid = $wp_query->post->ID;   
           $value1 = "your value 1";
    
           if($value1 !== '') {
              $content = $content . "<br>" . $value1 
           }
           else {
              $content = $content;
           }
        }
    
        return $content;
    }
    
    add_filter('the_content', 'content_function_update');
    

    在变量中添加任何自定义内容并将其附加到 $content 变量中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-11
      • 1970-01-01
      • 1970-01-01
      • 2017-12-22
      相关资源
      最近更新 更多