主题选项页面的快捷码或占位符?

时间:2013-07-30 作者:blogjunkie

我正在写一个主题选项页面,它为用户提供了一个空间来输入社交按钮的代码,例如。

<a href="https://twitter.com/share" class="twitter-share-button" 
    data-url="<?php echo get_permalink(); ?>">Tweet</a>
显然<?php echo get_permalink(); ?> 因为数据url属性在主题选项文本区域中不起作用。我的选择是什么?我见过其他用户

短代码,例如[permalink]——但如何处理短代码?

  • 占位符,例如{{url}}-同样,如何替换这些占位符?

  • 欣赏任何指向正确方向的指针。谢谢

    2 个回复
    SO网友:Tolea Bivol

    我正在使用短代码。但是,您需要以不同的方式处理此问题,并使客户更轻松。

    在“主题选项”页面上,您应该可以输入type=\'checkbox\' 客户端选择要显示的共享按钮在模板中,您应该使用get\\u option(“registered\\u option”)获取选项,并显示在主题选项中选中复选框的按钮。

    if( get_option(\'tweeter_checkbox\') )
      echo \'<a href="https://twitter.com/share" class="twitter-share-button" 
        data-url="\' . get_permalink(); . \'">Tweet</a>\';
    

    SO网友:Morgan Estes

    我同意你提到的占位符方法。

    您可以向用户提供一个“可接受”占位符列表,然后对其执行regex替换。

    诀窍是将带有占位符的字符串存储在数据库中,以便在用户下次访问“选项”页面时向用户显示其输入方式。做你的str_ireplacepreg_replace 在主题的其他地方使用它之前,先对它施魔法。

    <小时>EDIT:

    这是我今天提出的代码,可以实现这一点。我假设您已经熟悉设置选项页面。这将让您安全地保存以下内容<a href="{{url}}">{{url}}</a> 进入wp_options 表,并在主题中使用它作为<a href="http://www.wp.dev/hello-world/">http://www.wp.dev/hello-world/</a>

    使用选项页保存HTML{{url}} 占位符:

    public function parse_placeholder_url( ) {
        $placeholder_url = esc_html( $_POST[\'wpse108301\'][\'placeholder_url\'] );
    
        if ( isset( $placeholder_url ) && is_string( $placeholder_url ) ) {
    
            if ( get_option( \'wpse108301_placeholder_url\' ) === false ) {
                add_option( \'wpse108301_placeholder_url\', $placeholder_url );
            }
            else {
                update_option( \'wpse108301_placeholder_url\', $placeholder_url );
            }
        }
        else {
            $placeholder_url = \'\';
        }
    
        return $placeholder_url;
    }
    
    public function create_a_url_field() {
            ?><input type="text" id="wpse108301_placeholder_url" name="wpse108301[placeholder_url]" value="<?php echo stripslashes( get_option( \'wpse108301_placeholder_url\' ) ); ?>" /><?php
        }
    

    functions.php 在您的主题中:

    function test_link() {
        $db_url = stripslashes( get_option( \'wpse108301_placeholder_url\' ) );
        $url = preg_replace( \'/\\{\\{\\burl\\b\\}\\}/i\', get_permalink(), $db_url );
    
        return $url;
    }
    
    主题模板页面内:
    <p><?php echo test_link(); ?></p>
    

    结束

    相关推荐

    WP_Query in a shortcode

    我正在尝试将多个查询放在一个短代码中,以便可以在页面中调用它们,而不是使用自定义模板。我开始了我的查询,但我只看到了页面上的一些内容。显示图像,显示文本,但没有显示任何html标记。是否有一个Wordpress函数,我需要将其全部传递,以便它不会剥离HTML?function band_query($atts) { ?> <ul> <?php extract(shortcode_a