将插件设置值作为短代码属性插入

时间:2016-05-29 11:20:59

标签: wordpress shortcode

我写了一个插件。

其中一个插件的设置是网址/页面。

我希望我的客户能够继续使用主题的页面构建器,创建任何链接到插件设置中输入的URL的按钮。

客户端可以为他们创建的每个按钮手动输入URL,但这将是单调乏味的,如果插件设置中的URL发生变化,将会非常痛苦。

因此,我希望能够将插件的URL设置值用作第三方按钮短代码的URL属性。

这可能吗?类似的东西:

[button url="{get the plugin's URL setting}"][/button]

2 个答案:

答案 0 :(得分:0)

肯定是可能的。

您需要在插件中添加短代码功能。最好使用唯一的名称来避免冲突(不是'按钮')。 在你的插件php文件中添加函数并使用add_shortcode函数注册它,如下所示:

function shortcodeName_function( $atts ) {
  // add attribute handling and get the 'url' parameter
  $output = '<button a href="'. $url . '" class="button">';
  return $output;
}


add_shortcode( 'shortcodeName', 'shortcodeName_function');

现在,当插件被激活时,你现在可以使用这个名称的短代码。

[shortcodeName]

有关参数处理的更多信息,请参阅wordpress文档的链接:wordpress shortcode api

编辑:对不起,我想我错过了一点。你可以做的是 - 将插件网址设置存储在 cookie 中,并在短代码中检查cookie值。

答案 1 :(得分:0)

当shortcode没有属性url时,你可以在短代码返回输出中提供默认设置url。

喜欢这个

add_shortcode( 'button', 'shortcode_function_button');

 function shortcode_function_button( $atts ){

    $attr =  shortcode_atts( array(
        'url' =>  get_option( 'button_default_url' ) , // get your setting default url if shortcode have not
    ), $atts );                                        // attr url="http://example.com" then it use default
                                                       // setting url

    return '<a href="'.esc_url($attr['url']).'" class="button">Button</a>';
 }

如果已在插件或主题中构建短代码,则找到短代码回调函数并以这种方式更改atts。

如果在查找第三方短代码回调名称时出现问题,请在插件文件中检查所有已注册的带回调的短代码。

global $shortcode_tags;

print_r( $shortcode_tags ); 

// show all shortcodes with callback
/*Array
(
    [embed] => __return_false
    [wp_caption] => img_caption_shortcode
    [caption] => img_caption_shortcode
    [gallery] => gallery_shortcode
    [playlist] => wp_playlist_shortcode
    [audio] => wp_audio_shortcode
    [video] => wp_video_shortcode
    [button] => button_shortcode

)*/

如果您不想对您的插件短信进行任何更改并在插件中进行管理

  1. 删除以前声明的thired party插件的短代码,然后在插件顶部添加。

    remove_shortcode('button'); // https://developer.wordpress.org/reference/functions/remove_shortcode/

  2. 删除后重新创建相同的短代码标签,但使用自己的回拨名称,并像这样的短信代码一样工作

    add_shortcode( 'button', 'your_own_callback' );
    
    function your_own_callback( $atts, $content ){
    
    $attr =  shortcode_atts( array(
    'url' =>  get_option( 'button_default_url' ) , // Use same atts thired party using atts
    ), $atts );
    
    return button_shortcode( $attr, $content); // Use thired party callback function name.
    }