在筛选器挂钩中使用自定义字段

时间:2016-11-16 作者:Julian

我想将单个帖子主题文件中的一些代码添加到过滤器中,但我不知道该怎么做,因为它包含get\\u post\\u meta()函数。我已经找过了,但似乎找不出来。

代码输入single-post.php 主题文件:

$apoth_original_title = get_post_meta( get_the_ID(), \'original_blog_title\', true);
$apoth_original_url = get_post_meta( get_the_ID(), \'original_url\', true);
?>
<a id="apoth_readmore" class="w-btn style_solid size_medium color_primary icon_none" href="<?php echo $apoth_original_url?>"><span class="w-btn-label">Read More at <em><?php echo $apoth_original_title ?></em></span></a>
<?php
尝试在中筛选functions.php:

function apoth_readmore_link( $content ) {
if( is_single() ) {

    $content .= \'<a href="\' . get_post_meta(get_the_ID(), \'original_url\', true) . \'"> Read More</a>\' ;
}
return $content;
}

add_filter(\'the_content\', \'apoth_readmore_link\' )
我知道这不管用,因为get_post_meta() 不回显自定义字段数据,但我不知道如何将其分配给变量,然后在过滤器函数的上下文中回显它。或者我还没有找到其他的方法?

1 个回复
SO网友:jgraup

尝试get_queried_object() 参考WP_Post 创建页面的。

如果您在一篇文章上,它将返回post对象如果您在一个页面上,它将返回page对象如果您在存档页面上,它将返回post类型对象如果您在类别存档中,它将返回category对象如果您在作者存档中,它将返回author对象等

function apoth_readmore_link( $content ) {

    $post = get_queried_object();

    if ( get_class($post)===\'WP_Post\' ) {

        $url = get_post_meta($post->ID, \'original_url\', true);

        $content .= sprintf( \'<a href="%s">Read More</a>\', $url, $url );
    }

    return $content;
}

add_filter(\'the_content\', \'apoth_readmore_link\' );

相关推荐

绕过WP查询中的“supress_Filters”

显然,出于某种不合逻辑的原因,开发人员决定获取所有语言帖子的唯一方法是添加supress_filters=true 到WP\\u查询(而不是像这样language_code=all 选项)。无论如何,我的情况是,我需要获取所有语言的帖子,但也需要使用过滤器修改WP\\u查询。有没有办法强制将我的过滤器添加到查询中,即使supress_filters 设置为false?这是我需要添加的过滤器:add_filter( \'posts_where\', function($where, $wp_query) {