源码链接插件-如何修改?

时间:2018-12-03 作者:kacper3355

我正在使用一个小插件,可以为每篇文章添加源链接。我在这个线程中找到了代码:Article source link for posts

这几乎是完美的,但我想对其进行一点修改:首先,我需要为link的锚添加一个字段。现在只有一个“源链接”字段-当我在这里粘贴链接时,它在post中的显示方式完全相同(例如:www.stackexchange.com/questions/21652pn626262pinnpznxpiqtq/)。

我需要一个额外的锚字段,以能够设置一个不错的链接的标题。例如:StackOverflow(导致目标物品-https://wordpress.stackexchange.com/ - 例如。)

应该是这样的:

定位文本:StackOverflowSource链接:https://wordpress.stackexchange.com/

All links need to have a nofollow attribute

这就是它现在的样子:https://i.imgur.com/JfN8UX6.png这就是我想要的外观:https://i.imgur.com/qPuWiqp.png

有人知道我怎样才能那样修改它吗?

卡斯帕

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

您可以添加额外的(链接/URL标签)字段,如下所示:

中的wpse_source_meta_box() 函数中,添加额外字段的(HTML):

echo \'<input type="text" id="source-link-label"" name="source_link_label" value="\'.
  get_post_meta( $post->ID, \'_source_link_label\', true ) .\'" size="25" />\';
如您所见,字段名为_source_link_label 在中使用get_post_meta() 检索字段值时调用。

但是,由于现在有两个字段,您可能需要添加placeholderinput 字段:

  echo \'<input type="text" id="source-link"" name="source_link" value="\'.
    get_post_meta( $post->ID, \'_source_link\', true ) .\'" size="25" placeholder="URL" />\';

  echo \'<input type="text" id="source-link-label"" name="source_link_label" value="\'.
    get_post_meta( $post->ID, \'_source_link_label\', true ) .\'" size="25" placeholder="Label" />\';
或添加<label> 字段前:

  echo \'<label for="source-link">URL:</label> \';
  echo \'<input type="text" id="source-link"" name="source_link" value="\'.
    get_post_meta( $post->ID, \'_source_link\', true ) .\'" size="25" />\';

  echo \'<label for="source-link-label">Label:</label> \';
  echo \'<input type="text" id="source-link-label"" name="source_link_label" value="\'.
    get_post_meta( $post->ID, \'_source_link_label\', true ) .\'" size="25" />\';
中的wpse_source_link_save() 函数,保存/更新字段值,如下所示:

update_post_meta( $post_id, \'_source_link_label\', $_POST[\'source_link_label\'] );
然后将字段值(或链接标签)与链接URL一起使用,如下所示:

<?php
// Show if the source link was specified.
if ( $url = get_post_meta( $post->ID, \'_source_link\', true ) ) :
    $label = get_post_meta( $post->ID, \'_source_link_label\', true );
    $label = $label ? $label : $url;
?>
    <div class="source-link">
        Source: <a href="<?php echo esc_url( $url ); ?>"><?php // wrapped (for clarity)
          echo esc_html( $label ); ?></a>
    </div>
<?php endif; // end $url ?>
(部分代码取自here.)

因此,没有步骤3部分的完整代码如下所示this. :)

这应该有用,但我建议你使用sanitize_text_field() 更新字段时:

update_post_meta( $post_id, \'_source_link\', sanitize_text_field( $_POST[\'source_link\'] ) );
update_post_meta( $post_id, \'_source_link_label\', sanitize_text_field( $_POST[\'source_link_label\'] ) );
请参见this article 了解更多详细信息。

更新

您可以使用此代码代替我在上面步骤3中给出的代码,以确保源链接仅显示在多页内容的最后一页上(使用<!--nextpage-->) &mdash;如果内容未设置为多页,则链接(如果设置)将始终显示在第一页上:

<?php
global $post, $pages, $page;

$total = count( $pages );
// Show if there\'s only one page, or that we\'re on the last page.
if ( $total < 2 || $page === $total ) :
    // Show if the source link was specified.
    if ( $url = get_post_meta( $post->ID, \'_source_link\', true ) ) :
        $label = get_post_meta( $post->ID, \'_source_link_label\', true );
        $label = $label ? $label : $url;
    ?>
        <div class="source-link">
            Source: <a href="<?php echo esc_url( $url ); ?>"><?php
              echo esc_html( $label ); ?></a>
        </div>
    <?php endif; // end $url
endif; // end last page check
?>

相关推荐

Testing Plugins for Multisite

我最近发布了一个WordPress插件,它在单个站点上非常有效。我被告知该插件在多站点安装上不能正常工作,我理解其中的一些原因。我已经更新了代码,现在需要一种方法来测试更新后的代码,然后才能转到实时客户的多站点安装。我有一个用于测试的WordPress安装程序的单站点安装,但需要在多站点安装上进行测试。根据我所能找到的唯一方法是在网络上至少有两个站点来安装整个多站点安装,以测试我的插件。设置WordPress的整个多站点安装是插件开发人员的唯一/首选方式,还是有更快的测试环境可用。