1

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

4

2 回答 2

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;
}
于 2012-04-15T18:59:38.077 回答
0

只是对上面的代码稍作修改。之前的“img”属性在 Safari 上输出“找不到图像”图标(问号)。我只是用 'span' 替换了 'img' 并将图像添加为 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;
}
于 2012-04-21T09:19:57.160 回答