Inventory_Presser_Photo_Numberer::save_meta_photo_number( int $post_id, int $parent_post_id, int $sequence_number = null )
Saves a sequence number like 1, 2, or 99 in attachment post meta. This number dictates the order in which the photos will be disabled in sliders and galleries.
Parameters Parameters
- $post_id
-
(int) (Required) The post ID of the attachment.
- $parent_post_id
-
(int) (Required) The post ID of the vehicle to which $post_id is a child.
- $sequence_number
-
(int) (Optional) The sequence number to save. Do not provide to append.
Default value: null
Return Return
(void)
Source Source
File: includes/class-photo-numberer.php
public static function save_meta_photo_number( $post_id, $parent_post_id, $sequence_number = null ) {
if ( null === $sequence_number ) {
// Does this photo already have a sequence number?
if ( ! empty( INVP::get_meta( 'photo_number', $post_id ) ) ) {
// Yes.
return;
}
// Is the number in the slug?
// photo-5-of-19-of-vinsgsdkdkdkgf.
$number = 0;
if ( ! empty( $_POST['slug'] ) && preg_match( '/photo\-([0-9]+)\-of\-[0-9]+\-of\-.*/', sanitize_text_field( wp_unslash( $_POST['slug'] ) ), $matches ) ) {
$number = intval( $matches[1] );
} else {
/**
* This hook fires after the attachment(s) are added, so the
* vehicle may have 1 photo that is numbered, and the 3 that
* were just added have the vehicle as a parent but do not have
* number meta values. This request is for one of the 3, they
* are all happening simultaneously.
*/
global $wpdb;
$numbered_count = (int) $wpdb->get_var(
$wpdb->prepare(
"SELECT COUNT( `{$wpdb->prefix}posts`.`ID` )
FROM `{$wpdb->prefix}postmeta`
LEFT JOIN `{$wpdb->prefix}posts` ON `{$wpdb->prefix}posts`.`ID` = `{$wpdb->prefix}postmeta`.`post_id`
WHERE `{$wpdb->prefix}posts`.`post_parent` = %d
AND `post_type` = 'attachment'
AND `meta_key` = %s",
$parent_post_id,
apply_filters( 'invp_prefix_meta_key', 'photo_number' )
)
);
// How many unnumbered photos does this vehicle have?
$unnumbered_count = invp_get_the_photo_count( $parent_post_id ) - $numbered_count;
if ( 1 < $unnumbered_count ) {
/**
* Abort. There are a couple unnumbered photos running this
* method simultaneously. Let the photos remain unnumbered
* until the user presses the Save Draft or Update button in
* the editor.
*/
return;
}
$number = 1 + $numbered_count;
if ( 1 === $number ) {
// This is photo number 1, it should be the featured image.
set_post_thumbnail( $parent_post_id, $post_id );
}
}
} else {
$number = $sequence_number;
}
// Save the photo number in the photo's meta.
if ( 0 !== $number ) {
update_post_meta( $post_id, apply_filters( 'invp_prefix_meta_key', 'photo_number' ), $number );
}
}
Expand full source codeCollapse full source codeView on Github