正在以短代码形式检索自定义字段

时间:2019-04-26 作者:auntie

我在我的网站上添加了一个名为“dansk\\u url”的自定义字段,将在其中输入指向丹麦语版本(不同域)的链接。我希望能够将其输出为一个快捷码,以便在帖子中的任何地方添加,并且它应该显示为一个链接(锚文本将始终为“Dansk”,并且在该帖子的自定义字段中输入了哪个url)。

这可能吗?我更喜欢非插件解决方案。

2 个回复
最合适的回答,由SO网友:Qaisar Feroz 整理而成

把这个放进去functions.php 你的主题。

add_shortcode( \'dansk_url\', \'dansk_url\' );
function dansk_url() {
    $output=\'\';
    $the_url= get_post_meta( get_the_ID(), \'dansk_url\', true );

    if ( $the_url)  $output .= \'<a href="\' . esc_url( $the_url) . \'">Dansk</a>\';

    return $output;
}
并使用短代码[dansk_url] 在岗位上。

SO网友:Sally CJ

我希望能够将此作为一个快捷码输出,以便在帖子中的任何地方添加

因此,既然您说过,“我更喜欢非插件解决方案”,那么您可以使用它(您可以将其添加到主题中functions.php 文件)创建短代码:

add_shortcode( \'dansk_link\', \'dansk_link_shortcode\' );
function dansk_link_shortcode() {
    ob_start();
    $url = get_post_meta( get_the_ID(), \'dansk_url\', true );
    if ( $url ) : ?>
        <a href="<?php echo esc_url( $url ); ?>">Dansk</a>
    <?php
    endif; // end $url
    return ob_get_clean();
}
在帖子内容中,添加[dansk_link] 任何你喜欢的地方。

上面的PHP代码仍然被认为是一个插件,但它基本上是“您自己的”插件

PS:对于函数参考,您可以检查add_shortcode()get_post_meta().

更新我将快捷码名称更改为dansk_link 因为这似乎比dansk_url 短代码的用途(即输出链接)。

在我最初的回答中,我使用了输出缓冲(即ob_start()ob_get_clean()) 因此,您(问题作者)更容易编辑HTML输出。

在说出上述第2点之后,您还可以使用:

add_shortcode( \'dansk_link\', \'dansk_link_shortcode\' );
function dansk_link_shortcode() {
    if ( $url = get_post_meta( get_the_ID(), \'dansk_url\', true ) ) {
        return \'<a href="\' . esc_url( $url ) . \'">Dansk</a>\';
    }
    return \'\';
}

相关推荐

Geoip shortcodes in comments

我想知道如何从geoip插件添加国家/地区短代码(https://pl.wordpress.org/plugins/geoip-detect/) 输入注释字段。[geoip\\u detect2 property=“country”]据我所知,注释字段必须是所见即所得字段(默认情况下不是文本)。还有其他方法吗?通过自定义php函数或其他方式?你好,Michal