如何将此筛选器分配给变量?(将php和markup附加到_content)

时间:2012-03-31 作者:Klyde

===我现在有些东西可以用了,只是不正确。请阅读整个帖子,我将把它全部放在这里,因为其他人可能会从我在这个过程中的笨拙行为中受益!!

我正在使用高级自定义字段插件v3。我有一个似乎无法解决的问题。

我已经创建了一个“字段组”,它在后期编辑屏幕上正确呈现。meta框专门供作者输入附属链接。我在框的开头包含了一个真/假字段,因此如果选中它(返回真),那么元框将显示在站点的前端。这实际上非常有效。我添加了代码:

<?php if(get_field(\'affiliate_checkbox\')){ ?>
<div class="weedub_meta_box">

    <div class="weedub_meta_title">
        <span>Weedub Product Recommendations</span>
    </div>
        <div class="weedub_meta_item">
            <div class="weedub_meta_label">
                <span><?php the_sub_field(\'label_affiliate\'); ?></span>
            </div>
            <div class="weedub_meta_value">
                <a href="<?php the_sub_field(\'link_affiliate\'); ?>" target="_blank" alt="reference link" title="reference link"><?php the_sub_field(\'text_for_link_affiliate\'); ?></a>
            </div>
        </div>
</div>
这是在

<?php the_content(); ?>
这就是问题所在。

我有一个插件,在\\u内容的末尾附加一个“赞助商框”,赞助商框显示在我的附属元框之前。我理解为什么会发生这种情况(通常),但我完全不知道如何将代码附加到内容中,而不是在内容之后编写。

我找到了WordPress codex页面,其中谈到了“the\\u content filter”,但我就是无法让它工作。我真的不知道怎么开始!我可以将此筛选器写入我的函数吗。php文件,并让它将我的代码附加到\\u内容的末尾,并让它显示在插件的“赞助商框”之前????

我真的需要这方面的帮助,我已经彻底耗尽了整整三天的精力,但都没有用。。。

我们非常感谢您的任何帮助,因为我不是php向导,我已经不知所措了Aaron

======================编辑===========================

我现在有些东西在工作,但它正在破坏页面上的其他过滤器。。。但是它正在工作,哈哈:

function weedub_affiliate_filter($content) {

print $content; if (is_single()) { ?>
<div class="weedub_meta_box">

    <div class="weedub_meta_title">
        <span>Weedub Product Recommendations</span>
    </div>
        <div class="weedub_meta_item">
            <div class="weedub_meta_label">
                <span><?php the_sub_field(\'label_affiliate\'); ?></span>
            </div>
            <div class="weedub_meta_value">
                <a href="<?php the_sub_field(\'link_affiliate\'); ?>" target="_blank" alt="reference link" title="reference link"><?php the_sub_field(\'text_for_link_affiliate\'); ?></a>
            </div>
        </div>
</div>
add_filter( \'the_content\', \'weedub_affiliate_filter\', 9 );
据WordPress报道,我知道这是不对的,我偶然发现了Ian Stewart大约3.5年前写的一篇帖子:Here is the link 它教会了我如何以错误的方式工作!!这篇文章下面有两条评论,试图说明如何正确操作,但评论者认为你知道自己在做什么,哈哈。

=============编辑=====================

好啊我不会再犯任何错误了,这是惊人的!但是,向下滚动至页面末尾:Just past END OF THE_CONTENT 您将看到字段中没有数据。。。我很确定这与这一行有关:if (is_single() && get_field(\'affiliate_checkbox\') && get_field(\'affiliate_label\')) {

但是我不确定!蒂姆,你真棒,我们真的很近了!

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

祝贺您(几乎)解决了您的问题:)

这篇文章下面有两条评论,试图说明如何以正确的方式做这件事

他们建议这样做:

function weedub_affiliate_filter($content) {
    $string_to_add = \'\';
    if (is_single()) {
        $string_to_add = $string_to_add . \'the string you wanted to add\';
    }
    $content = $content . $string_to_add;
    return $content;
}

add_filter( \'the_content\', \'weedub_affiliate_filter\');
与当前解决方案的区别在于,在这种情况下,过滤器只过滤内容。它通过将两个字符串$content(一个全局变量)和$string\\u附加到\\u add来实现这一点。

在您的解决方案中,它将其打印到屏幕上,然后打印其他内容。上述解决方案允许其他过滤器在将内容打印到屏幕之前也对其进行过滤(当前版本没有这样做,这就是为什么一些过滤器被破坏的原因)。

//编辑:语法错误,意外的T\\U字符串意味着有关单引号或双引号的内容不正确。

当您混合使用php和html时,仅仅转义单引号(正如我前面提到的)是不够的。

这段代码应该(希望)适合您:

http://www.pastie.org/private/kzni3uxip0ze57krvtfyjg(无法在此帖子中正确设置格式…)

结束

相关推荐

使用自定义Metabox设置事件过期

在房地产网站上工作,并使用自定义元框中的下拉菜单设置开放日和时间。下拉列表示例如下:<select name=\"sale_listing_open_house1_start_day\" id=\"sale_listing_open_house1_start_day\"> <option value=\"monday\" <?php selected( $selected, \'Monday\' ); ?>>Monday</option