oont-contents/plugins/wp-rocket/inc/Engine/CriticalPath/RESTWPPost.php
2025-02-08 15:10:23 +01:00

108 lines
2.1 KiB
PHP

<?php
namespace WP_Rocket\Engine\CriticalPath;
use WP_Error;
/**
* Class RESTWPPost
*
* @package WP_Rocket\Engine\CriticalPath
*/
class RESTWPPost extends RESTWP {
/**
* Part of route namespace for this inherited class item type.
*
* @var string $route_namespace to be set with like post, term.
*/
protected $route_namespace = 'post';
/**
* Validate the item to be sent to generate CPCSS.
*
* @since 3.6
*
* @param int $post_id ID for this post to be validated.
*
* @return true|WP_Error
*/
protected function validate_item_for_generate( $post_id ) {
$status = get_post_status( $post_id );
if ( ! $status ) {
return new WP_Error(
'post_not_exists',
__( 'Requested post does not exist.', 'rocket' ),
[
'status' => 400,
]
);
}
if ( 'publish' !== $status ) {
return new WP_Error(
'post_not_published',
__( 'Cannot generate CPCSS for unpublished post.', 'rocket' ),
[
'status' => 400,
]
);
}
return true;
}
/**
* Validate the item to be sent to delete CPCSS.
*
* @since 3.6
*
* @param int $post_id ID for this post to be validated.
*
* @return true|WP_Error
*/
protected function validate_item_for_delete( $post_id ) {
if ( empty( get_permalink( $post_id ) ) ) {
return new WP_Error(
'post_not_exists',
__( 'Requested post does not exist.', 'rocket' ),
[
'status' => 400,
]
);
}
return true;
}
/**
* Get url for this item.
*
* @since 3.6
*
* @param int $post_id ID for this post to be validated.
*
* @return false|string
*/
protected function get_url( $post_id ) {
return get_permalink( $post_id );
}
/**
* Get CPCSS file path to save CPCSS code into.
*
* @since 3.6
*
* @param int $post_id ID for this post to be validated.
* @param bool $is_mobile Bool identifier for is_mobile CPCSS generation.
*
* @return string
*/
protected function get_path( $post_id, $is_mobile = false ) {
$post_type = get_post_type( $post_id );
return 'posts' . DIRECTORY_SEPARATOR . "{$post_type}-{$post_id}" . ( $is_mobile ? '-mobile' : '' ) . '.css';
}
}