我想要做的是在the_content之后和插件之前输出自定义字段内容(这是一个带有动态链接的按钮,该按钮插入每个帖子的自定义字段的值中)。
这是自定义字段的代码:
<div class="button">
<a href="<?php echo get_post_meta($post->ID, 'Button', true); ?>">
<img src="<?php echo get_template_directory_uri() . '/images/button.png'; ?>" alt="link" />
</a>
</div>
在wordpress codex上,我还找到了如何将一个过滤器应用于the_content以获得类似于我想要的东西的例子。这是代码:
add_filter( 'the_content', 'my_the_content_filter', 20 );
function my_the_content_filter( $content ) {
if ( is_single() )
// Add image to the beginning of each page
$content = sprintf(
'<img class="post-icon" src="%s/images/post_icon.png" alt="Post icon" title=""/>%s',
get_bloginfo( 'stylesheet_directory' ),
$content
);
// Returns the content.
return $content;
}
问题是我不知道PHP,我不知道如何编辑上述代码以应用于我的特定情况。
我修改了一下,我设法列出按钮,但只在the_content之前,没有启用自定义字段的PHP。
add_filter( 'the_content', 'my_the_content_filter', 20 );
function my_the_content_filter( $content ) {
if ( is_single() )
// Add button to the end of each page
$content = sprintf(
'<img class="button-link" src="%s/images/button.png" alt="Link" title=""/>%s',
get_bloginfo( 'stylesheet_directory' ),
$content
);
// Returns the content.
return $content;
}
你可以在这里看到输出:http://digitalmediaboard.com/?p=6583(这是右上角的'show-me'按钮)
答案 0 :(得分:2)
$content .= sprintf(...); // will add the button right after content.
在你的例子中
// Add button to the end of each page
$content = sprintf(
'<img class="button-link" src="%s/images/button.png" alt="Link" title=""/>%s',
get_bloginfo( 'stylesheet_directory' ),
$content
);
将其更改为
$lnk=get_bloginfo( 'stylesheet_directory' );
$content .= '<img class="button-link" src=$lnk."/images/button.png" alt="Link" title=""/>';
在内容之后添加新内容/按钮。此外,您需要为该按钮添加一些css
样式,以便根据您在内容之内/之后的需要进行放置。
我认为您可以轻松修改index.php
,并可以在内容后添加您提供的问题代码。
<强>更新强>
add_filter( 'the_content', 'my_the_content_filter', 20 );
function my_the_content_filter( $content ) {
if ( is_single() )
{
global $post;
$imgLnk=get_bloginfo( 'stylesheet_directory' );
$pgLnk=get_post_meta($post->ID, 'Button', true);
$content .= '<a href="'.$pgLnk.'"><img class="button-link" src=$lnk."/images/button.png" alt="Link" title=""/></a>';
}
return $content;
}
答案 1 :(得分:0)
只需对上述代码稍作修改即可。之前的“img”属性在Safari上输出了“未找到图像”图标(问号)。我只是将'img'替换为'span'并将图像添加为CSS中的背景。
add_filter( 'the_content', 'my_the_content_filter', 0 );
function my_the_content_filter( $content ) {
if ( is_single() )
{
global $post;
$pgLnk=get_post_meta($post->ID, 'Button', true);
$content .= '<div id="button-link"><a href="'.$pgLnk.'" target="_blank"><span class="button-link"></span></a></div>';
}
return $content;
}