解析文本区域自定义元框并为现有元键赋值

时间:2011-05-28 作者:Chris_O

我构建了一个post界面,以接受自定义元框形式的特定数据,但现在最终用户说,要剪切和粘贴4次太费事了。所以现在(完全超出了原来的范围),我需要解析输入到新文本区域元框中的数据,并将每一行作为一个值分配给2个现有键,即\\u tile和substr\'d摘录。(见图)

实际上,它真的不需要使用现有的密钥。它可以使用新的变量,也可以只分配给一个新的$变量(我宁愿在保存时解析,而不是在查询时解析)。

元框是使用一个处理保存和更新的类构建的,我只需要知道如何拆分新字段。我还必须有条件地确定他们是使用单个框还是新的文本区域框。

其中一个元框用于外部url。我必须检查它是否存在。如果为null,模板将使用永久链接。

该用例非常具体,因为所有数据都在不同大小的框中的特定位置输出。见下文:

enter image description here

解析数据所需的顺序:

标题<---- I\'m saying this one is optional (They still have to enter a post title)

源`<;---meta\\u键是$前缀。\'文章来源\'

节选<--- the_excerpt but can be a new key 它只能输出115个字符,以避免破坏布局。在我们决定进行任何操作之前,我们还必须检查是否在真实的WordPress摘录框中输入了任何内容。

点击url<--- meta_key is $prefix.\'external_link

所有这些代码都运行良好。只是添加它来显示数据的使用方式

while ($box_query->have_posts()) : $box_query->the_post(); global $post; global $prefix;
                       
    $box_size = c3m_get_field( $prefix.\'box_size\', FALSE );
    $box_image = c3m_get_field( $prefix.\'post_box_image\', FALSE );
    $overlay_class = c3m_get_field( $prefix.\'overlay_class\', FALSE );
    $ad_code = c3m_get_field( $prefix.\'ad_code\', FALSE );
    $source = c3m_get_field( $prefix.\'article-source\', FALSE );
    
    if ( c3m_get_field($prefix.\'external_link\', FALSE) ) {
    $post_link = c3m_get_field($prefix.\'external_link\', FALSE) ;
    } else
            { $post_link = post_permalink(); 
    } ?>
               
           <li class="ui-state-default <?php echo $box_size;?>">
             <article <?php post_class() ?>>
        <?php   if ( $ad_code ) { ?> <div class="ad-box <?php echo $overlay_class;?>"> <?php echo $ad_code; } else { 
             echo  \'<a href="\'.$post_link.\'" ><img src="\'.esc_url($box_image).\'" alt="Image via xxxxxxxxxx.com" /></a>\'; ?>

                    <div class="post-box <?php echo $overlay_class;?>">
                    
                    <?php if ( c3m_get_field( $prefix.\'text_display\', FALSE) ) {  ?>
                        
                        <h2><a href="<?php echo $post_link?>"><?php the_title();?></a></h2>
                        
                        <p><?php 
                            if ( $source ) { echo \'(\' .$source. \') \'; }
                            if ( $box_size == \'double-single\' ) { echo substr( $post->post_excerpt, 0, 300) .\'...\'; ?></p> <?php
                            } else {
                            echo substr( $post->post_excerpt, 0, 115) .\'...\' ; ?></p> <?php } ?>
                        
                        <?php } ?>
                        
                        <?php } ?>
因此,问题是如何将4条cr打断线粘贴到1个元框中,并为每一行指定一个变量。

谢谢,我会挂断电话听你说的。

编辑:

粘贴的信息将为4行

第一行:标题

第二行:源

第三行:简短摘录

第四行:链接Url

示例:

四年后,埃及重新开放与加沙地带的边界

《纽约时报》

加沙地带数百名巴勒斯坦居民星期六乘公交车抵达这里,通过开放的边境进入埃及。http://www.nytimes.com/2011/05/29/world/middleeast/29egypt.html?_r=1&hp

enter image description here

该输入在前端看起来是这样的。标题链接到链接url:

enter image description here

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

这是一个非常简单的脚本,它将框中的文本拆分为不同的行,并将它们填入标题、摘录和两个自定义字段中。

jQuery( function( $ ) {
    $( \'#wpse18528_paste_box\' ).keyup( function() {
        var text = $( \'#wpse18528_paste_box\' ).val();
        var lines = text.split( /[\\n\\r]+/ );
        $( \'#title\' ).val( lines[0] );
        $( \'#title\' ).siblings( \'#title-prompt-text\' ).css( \'visibility\', \'hidden\' );
        $( \'#excerpt\' ).val( lines[2] );
        $( \'#wpse18528_source\' ).val( lines[1] );
        $( \'#wpse18528_link\' ).val( lines[3] );
    } );
} );
当前正则表达式是一个或多个换行符-我不知道您是否想要这个?

而且,不是在每个keyup (这可以很好地粘贴和编辑“懒惰框”中的小错误),您还可以添加“拆分”按钮并使用click it事件。

结束

相关推荐

Getting metabox value?

我使用Wordpress参考中的代码制作了一个自定义元数据库:http://codex.wordpress.org/Function_Reference/add_meta_box<?php /* Define the custom box */ // WP 3.0+ // add_action(\'add_meta_boxes\', \'myplugin_add_custom_box\'); // backwards compatible