DatePicker Altfield和AltFormat在POST中保存新的元键/值?

时间:2017-06-12 作者:Hunter Becton

我使用Meta Box插件为Woocommerce产品创建了一个新的metabox,该插件使用Datepicker接收事件日期。

我正在使用st-event_start_date 用于在前端网格元素上显示日期的元数据(如下所示):

enter image description here

现在,我想以另一种格式存储日期,以便使用它按日期筛选帖子。我对altFormataltField 中的选项Datepicker docs 并将它们添加到我的post js\\u选项中。

不幸的是,这似乎不起作用。我做错了什么?WordPress在使用altField时会创建新的元数据值吗?

这是我当前放置在子主题函数中的代码。php文件:

// Add event details meta box to Woocommerce Products

function st_event_info( $meta_boxes ) {
$prefix = \'st-\';

$meta_boxes[] = array(
    \'id\' => \'st_event_info\',
    \'title\' => esc_html__( \'Event Info\', \'skillthrive\' ),
    \'post_types\' => array( \'product\' ),
    \'context\' => \'advanced\',
    \'priority\' => \'default\',
    \'autosave\' => false,
    \'fields\' => array(
        array(
            \'id\' => $prefix . \'event_start_date\',
            \'type\' => \'date\',
            \'name\' => esc_html__( \'Event Start Date\', \'skillthrive\' ),
            \'js_options\' => array(
                \'dateFormat\' => \'M dd\',
                \'altField\' => \'.actualDate\',
                \'altFormat\' => \'yy-mm-dd\',
                \'minDate\' => \'0\',
            ),
        ),
        array(
            \'id\' => $prefix . \'event_start_time\',
            \'name\' => esc_html__( \'Event Start Time\', \'skillthrive\' ),
            \'type\' => \'time\',
            \'js_options\' => array(
                \'timeFormat\' => \'h:mm tt\',
            ),
        ),
    ),
);

return $meta_boxes;
}
add_filter( \'rwmb_meta_boxes\', \'st_event_info\' );

echo do_shortcode( \'[rwmb_meta meta_key="st_event_info"]\' );

1 个回复
SO网友:Hunter Becton

我没有提到我正在使用基本网格插件来创建网格元素。该插件能够使用来自主题或网格中其他插件的元数据。

因此,我正在创建一个链接到自定义帖子类型的网格,然后使用我用Metabox中的meta box插件创建的自定义meta box中的meta。io。

现在,我最初的问题是

如何按日期排序(通过基本网格插件处理)

  • 确保日期以我想要的格式显示(例如6月23日)
    1. 我的解决方案是以Unix时间戳格式保存元数据,然后使用jQuery将其转换为我想要的格式。

      保存日期就像在自定义元框的字段数组中添加“timestamp”=>true一样简单。如果您正在使用Metabox,也会为您创建此项。通过单击“时间戳”旁边的框,为数据字段创建io生成器

      通过将以下内容添加到基本网格元素“源”下的“附加参数”,可以根据此元数据对帖子进行排序:

      meta\\u key=live\\u start\\u日期(&;orderby=meta\\u value\\u num(&;订单=ASC

      以下是我的网站上的网格:

      enter image description here

      现在,我所做的只是在“API/Javascript”下为相同的基本网格添加以下jQuery:

      jQuery(document).ready(function($) {
      /* Change timestamp in Essential Grid to a date */
        $(".live_start_date").each(function() {
          var rawdata = $(this).html().replace("<span></span>", ""); // Grab timestamp and remove extra info
          var rawdate = new Date(rawdata * 1000); // Turn timestamp into date
          var days = [\'Sun\',\'Mon\', \'Tue\', \'Wed\', \'Thu\', \'Fri\', \'Sat\'];
          var months = [\'Jan\', \'Feb\', \'Mar\', \'Apr\', \'May\', \'June\', \'July\', \'Aug\', \'Sept\', \'Oct\', \'Nov\', \'Dec\'];
          var day = days[rawdate.getDay()]; // Get Day
          var date = rawdate.getDate(); // Get Date
          var month = months[rawdate.getMonth()]; // Get Month
          $(this).html(month + " " + date); // Rewrite timestamp as date in format "Mon 11"
        });
      });
      
      在这样做并保存了基本网格之后,我在我的网站上得到了以下内容:

      enter image description here

      正是我想要的!

    结束

    相关推荐

    JQuery UI可排序不能与Metabox一起使用

    我在这方面遇到了很多麻烦-我的ul-li不会去任何地方。我已经看过了这本书的大部分“副本”,但我一辈子都无法让它发挥作用。而且我的代码可能不是最好的,所以请随意评论/回答(只要答案也是实际的答案)更好的做事方式。脚本注册:function add_admin_scripts( $hook ) { global $post; wp_register_script( \'sectioned_page_script\', get_stylesheet_directory_uri