the_content之后的wordpress自定义字段输出

时间:2012-04-15 18:26:18

标签: php wordpress

我想要做的是在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'按钮)

2 个答案:

答案 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;
}