Wordpress抓取整数模式并存储到自定义字段中

时间:2015-03-05 07:14:26

标签: wordpress

我很奇怪是否可以在帖子标题中自动获取整数模式并存储到自定义字段中。

例如。职称是 家庭长度是300-500 厨房是150.50-300

例如。抓住上述帖子的自定义字段的数据是: 300和500, 150.5和300

我正在思考这个过程。如果字符串匹配整数模式,请添加post meta

1 个答案:

答案 0 :(得分:0)

您可以挂钩在Wordpress中的post_save操作,该操作会在创建或更新帖子时运行。然后在标题上运行正则表达式并将任何数字匹配保存到post meta中,如此...

/**
 * On post save this function runs a regular expression to find
 * any decimal numbers in the title and save them as post meta
 * in a title_numbers field
 *
 * @param  {integer} $post_id the post_id gets passed from the post_save action
 * @return {boolean}          returns false if no numbers are found in the title
 */
function my_project_store_title_integers( $post_id ) 
{

    $post_title = get_the_title( $post_id );

    if ( preg_match_all( '/([0-9.]+)/', $post_title, $numbers ) )
    {
        update_post_meta( $post_id, 'title_numbers', $numbers[0] );
        return true;
    }

    return false;
}

add_action( 'save_post', 'my_project_store_title_integers' );

将此内容放入functions.php。此功能将在保存后自动调用,但您可以手动调用它并将其传递给任何帖子ID,例如......

my_project_store_title_integers( 22 );

这会将帖子标题中的任何数字保存到名为' title_numbers'的元字段中的数组中。例如,如果帖子22的帖子标题是......

'帖子标题是家庭长度是300-500厨房是150.50-300'

你可以得到这样的元......

$meta = get_post_meta( 22, 'title_numbers', true );
print_r( $meta );

//output
Array
(
    [0] => 300
    [1] => 500
    [2] => 150.50
    [3] => 300
)

更新以测试数据是否存储尝试将以下代码粘贴到single.php模板中...

<?php
$title_numbers = get_post_meta( get_the_ID(), 'title_numbers', true );
if( $title_numbers ) {
    echo '<pre>';
    print_r( $title_numbers );
    echo '</pre>';
}
?>

如果元数据保存正确,此代码将输出元数据。试试看。

希望有所帮助