简体   繁体   中英

Shortcode as an value in wordpress

I have a button shortcode on my website which I will be using in all of my posts. What I want is, If I modified the button value the changes should be applied to all the button on the website.So that I don't have to modify each and every post.

I want to change the buttons Caption , Link and maybe rel

For example:

[button rel="[btn-rel]" url="[btn-url]"] [btn-cap] [/button] 

I googled the problem and added following code to Function.php to change the button caption.

function btn_cap() {  
    return 'More Freebies!';
}
add_shortcode('btn-cap', 'btn_cap');

and added the Shortcode to the button shortcode like this:

[button][btn-cap][/button]

Which didn't worked out :( The caption of the button is "[btn-cap]" not "More freebies"

I really want this thing to work as it will save me alot of time and work.

Thanks in advance...

You cannot use shortcodes as variables/placeholders as in your example. You can however write your own button shortcode with the default values you require.

Add the following to functions.php

function freebie_button( $atts, $content = null) {
    // Default values
    $atts = shortcode_atts( array(
            'rel'   => 'nofollow',
            'url'   => '/',
            'cap'   => 'More Freebies!',
        ), $atts );

    $rel = 'rel="' . $atts['rel'] . '" ';
    // remove 'rel' attribute if it's empty
    if($rel === ''){
        $rel = '';
    }

    return '<a ' . $rel . 'href="' . $atts['url'] . '">' . $atts['cap'] . do_shortcode($content) . '</a>';
}
add_shortcode('freebutton', 'freebie_button');

Uses

[freebutton]
[freebutton rel="" url="#" cap="Buy this"]
[freebutton cap="Read "]More[/freebutton]

Output

<a rel="nofollow" href="/">More Freebies!</a>
<a href="#">Buy this</a>
<a rel="nofollow" href="/">Read More</a>

Hopefully this code will get you started.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM