<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[54320] trunk/src/wp-includes: Code Modernization: Fix null to non-nullable deprecations in `wp_xmlrpc_server::mw_newPost()`.</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { white-space: pre-line; overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta" style="font-size: 105%">
<dt style="float: left; width: 6em; font-weight: bold">Revision</dt> <dd><a style="font-weight: bold" href="https://core.trac.wordpress.org/changeset/54320">54320</a><script type="application/ld+json">{"@context":"http://schema.org","@type":"EmailMessage","description":"Review this Commit","action":{"@type":"ViewAction","url":"https://core.trac.wordpress.org/changeset/54320","name":"Review Commit"}}</script></dd>
<dt style="float: left; width: 6em; font-weight: bold">Author</dt> <dd>SergeyBiryukov</dd>
<dt style="float: left; width: 6em; font-weight: bold">Date</dt> <dd>2022-09-27 01:58:43 +0000 (Tue, 27 Sep 2022)</dd>
</dl>

<pre style='padding-left: 1em; margin: 2em 0; border-left: 2px solid #ccc; line-height: 1.25; font-size: 105%; font-family: sans-serif'>Code Modernization: Fix null to non-nullable deprecations in `wp_xmlrpc_server::mw_newPost()`.

The `wp_xmlrpc_server::mw_newPost()` method creates a new post via `wp_insert_post()`, but the default/fallback values used in the function were not in line with the default/fallback values used in the `wp_insert_post()` function.

The `wp_insert_post()` function does a `wp_parse_args()` (array merge) of the received arguments with the defaults. If any of the received arguments are `null`, this would overwrite the default value, as seen in [https://3v4l.org/bfVlv array_merge() example], and lead to "passing null to non-nullable" deprecation notices on PHP 8.1 for certain arguments.

This commit:
* Ensures that all arguments are defined before they are `compact()`'ed together to the arguments array.
* Verifies that the default/fallback value of the arguments as set within the `wp_xmlrpc_server::mw_newPost()` method are the same as the default/fallback values used in the `wp_insert_post()` function.
* Verifies that arguments which do not have a default/fallback value defined in the `wp_insert_post()` function are handled correctly.
 * This was not the case for `$post_name`, which would previously already get an empty string default value in the `wp_xmlrpc_server::mw_newPost()` function, but then in the `wp_insert_post()` function, this would prevent the slug generation from being activated. Fixed now by setting the default in the `wp_xmlrpc_server::mw_newPost()` function to `null`.
 * The `page_template` argument was handled, but not documented in the `wp_insert_post()` function. The argument is now documented in the `wp_insert_post()` function DocBlock. Note: There are more than likely several other potential arguments missing from that list, but verifying the whole list is outside the scope of this particular commit.

Includes minor simplifications, such as:
* Setting a default ahead of an `if`, instead of in an `else` clause (as long as no function call is needed to set the default).
* Removing the unnecessary logic duplication in the `$post_status` switch.
* Using a combined concatenation + assignment operator for adding `$post_more`.

Fixes various errors along the lines of:
{{{
1) Tests_XMLRPC_mw_editPost::test_draft_not_prematurely_published
strpos(): Passing null to parameter <a href="https://core.trac.wordpress.org/ticket/1">#1</a> ($haystack) of type string is deprecated

/var/www/src/wp-includes/formatting.php:2497
/var/www/src/wp-includes/class-wp-hook.php:308
/var/www/src/wp-includes/plugin.php:205
/var/www/src/wp-includes/post.php:2835
/var/www/src/wp-includes/post.php:2720
/var/www/src/wp-includes/post.php:4066
/var/www/src/wp-includes/class-wp-xmlrpc-server.php:5616
/var/www/tests/phpunit/tests/xmlrpc/mw/editPost.php:315

...

23) Tests_XMLRPC_mw_editPost::test_draft_not_prematurely_published
json_decode(): Passing null to parameter <a href="https://core.trac.wordpress.org/ticket/1">#1</a> ($json) of type string is deprecated

/var/www/src/wp-includes/kses.php:2074
/var/www/src/wp-includes/class-wp-hook.php:307
/var/www/src/wp-includes/plugin.php:205
/var/www/src/wp-includes/post.php:2835
/var/www/src/wp-includes/post.php:2720
/var/www/src/wp-includes/post.php:4066
/var/www/src/wp-includes/class-wp-xmlrpc-server.php:5615
/var/www/tests/phpunit/tests/xmlrpc/mw/editPost.php:315
/var/www/vendor/bin/phpunit:123
}}}

Follow-up to <a href="https://core.trac.wordpress.org/changeset/1563">[1563]</a>, <a href="https://core.trac.wordpress.org/changeset/4793">[4793]</a>, <a href="https://core.trac.wordpress.org/changeset/7900">[7900]</a>, <a href="https://core.trac.wordpress.org/changeset/16824">[16824]</a>, <a href="https://core.trac.wordpress.org/changeset/19848">[19848]</a>, <a href="https://core.trac.wordpress.org/changeset/40677">[40677]</a>, <a href="https://core.trac.wordpress.org/changeset/51968">[51968]</a>.

Props jrf.
See <a href="https://core.trac.wordpress.org/ticket/55656">#55656</a>.</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunksrcwpincludesclasswpxmlrpcserverphp">trunk/src/wp-includes/class-wp-xmlrpc-server.php</a></li>
<li><a href="#trunksrcwpincludespostphp">trunk/src/wp-includes/post.php</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunksrcwpincludesclasswpxmlrpcserverphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/src/wp-includes/class-wp-xmlrpc-server.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/src/wp-includes/class-wp-xmlrpc-server.php  2022-09-26 22:41:11 UTC (rev 54319)
+++ trunk/src/wp-includes/class-wp-xmlrpc-server.php    2022-09-27 01:58:43 UTC (rev 54320)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -5399,30 +5399,27 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                // Let WordPress generate the 'post_name' (slug) unless
</span><span class="cx" style="display: block; padding: 0 10px">                // one has been provided.
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $post_name = '';
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $post_name = null;
</ins><span class="cx" style="display: block; padding: 0 10px">                 if ( isset( $content_struct['wp_slug'] ) ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        $post_name = $content_struct['wp_slug'];
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                // Only use a password if one was given.
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                $post_password = '';
</ins><span class="cx" style="display: block; padding: 0 10px">                 if ( isset( $content_struct['wp_password'] ) ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        $post_password = $content_struct['wp_password'];
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                } else {
-                       $post_password = '';
</del><span class="cx" style="display: block; padding: 0 10px">                 }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                // Only set a post parent if one was given.
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                $post_parent = 0;
</ins><span class="cx" style="display: block; padding: 0 10px">                 if ( isset( $content_struct['wp_page_parent_id'] ) ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        $post_parent = $content_struct['wp_page_parent_id'];
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                } else {
-                       $post_parent = 0;
</del><span class="cx" style="display: block; padding: 0 10px">                 }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                // Only set the 'menu_order' if it was given.
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                $menu_order = 0;
</ins><span class="cx" style="display: block; padding: 0 10px">                 if ( isset( $content_struct['wp_page_order'] ) ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        $menu_order = $content_struct['wp_page_order'];
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                } else {
-                       $menu_order = 0;
</del><span class="cx" style="display: block; padding: 0 10px">                 }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $post_author = $user->ID;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -5450,8 +5447,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        $post_author = $content_struct['wp_author_id'];
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $post_title   = isset( $content_struct['title'] ) ? $content_struct['title'] : null;
-               $post_content = isset( $content_struct['description'] ) ? $content_struct['description'] : null;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $post_title   = isset( $content_struct['title'] ) ? $content_struct['title'] : '';
+               $post_content = isset( $content_struct['description'] ) ? $content_struct['description'] : '';
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $post_status = $publish ? 'publish' : 'draft';
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -5464,15 +5461,15 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                        $post_status = $content_struct[ "{$post_type}_status" ];
</span><span class="cx" style="display: block; padding: 0 10px">                                        break;
</span><span class="cx" style="display: block; padding: 0 10px">                                default:
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        $post_status = $publish ? 'publish' : 'draft';
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                 // Deliberably left empty.
</ins><span class="cx" style="display: block; padding: 0 10px">                                         break;
</span><span class="cx" style="display: block; padding: 0 10px">                        }
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $post_excerpt = isset( $content_struct['mt_excerpt'] ) ? $content_struct['mt_excerpt'] : null;
-               $post_more    = isset( $content_struct['mt_text_more'] ) ? $content_struct['mt_text_more'] : null;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $post_excerpt = isset( $content_struct['mt_excerpt'] ) ? $content_struct['mt_excerpt'] : '';
+               $post_more    = isset( $content_struct['mt_text_more'] ) ? $content_struct['mt_text_more'] : '';
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $tags_input = isset( $content_struct['mt_keywords'] ) ? $content_struct['mt_keywords'] : null;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $tags_input = isset( $content_struct['mt_keywords'] ) ? $content_struct['mt_keywords'] : array();
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                if ( isset( $content_struct['mt_allow_comments'] ) ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        if ( ! is_numeric( $content_struct['mt_allow_comments'] ) ) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -5536,10 +5533,10 @@
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                if ( $post_more ) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        $post_content = $post_content . '<!--more-->' . $post_more;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 $post_content .= '<!--more-->' . $post_more;
</ins><span class="cx" style="display: block; padding: 0 10px">                 }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $to_ping = null;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $to_ping = '';
</ins><span class="cx" style="display: block; padding: 0 10px">                 if ( isset( $content_struct['mt_tb_ping_urls'] ) ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        $to_ping = $content_struct['mt_tb_ping_urls'];
</span><span class="cx" style="display: block; padding: 0 10px">                        if ( is_array( $to_ping ) ) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -5555,12 +5552,11 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        $dateCreated = $content_struct['dateCreated']->getIso();
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                $post_date     = '';
+               $post_date_gmt = '';
</ins><span class="cx" style="display: block; padding: 0 10px">                 if ( ! empty( $dateCreated ) ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        $post_date     = iso8601_to_datetime( $dateCreated );
</span><span class="cx" style="display: block; padding: 0 10px">                        $post_date_gmt = iso8601_to_datetime( $dateCreated, 'gmt' );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                } else {
-                       $post_date     = '';
-                       $post_date_gmt = '';
</del><span class="cx" style="display: block; padding: 0 10px">                 }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $post_category = array();
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -5786,7 +5782,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        $menu_order = $content_struct['wp_page_order'];
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $page_template = null;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $page_template = '';
</ins><span class="cx" style="display: block; padding: 0 10px">                 if ( ! empty( $content_struct['wp_page_template'] ) && 'page' === $post_type ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        $page_template = $content_struct['wp_page_template'];
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -5894,7 +5890,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        $post_excerpt = $content_struct['mt_excerpt'];
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $post_more = isset( $content_struct['mt_text_more'] ) ? $content_struct['mt_text_more'] : null;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $post_more = isset( $content_struct['mt_text_more'] ) ? $content_struct['mt_text_more'] : '';
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $post_status = $publish ? 'publish' : 'draft';
</span><span class="cx" style="display: block; padding: 0 10px">                if ( isset( $content_struct[ "{$post_type}_status" ] ) ) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -5911,7 +5907,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        }
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $tags_input = isset( $content_struct['mt_keywords'] ) ? $content_struct['mt_keywords'] : null;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $tags_input = isset( $content_struct['mt_keywords'] ) ? $content_struct['mt_keywords'] : array();
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                if ( 'publish' === $post_status || 'private' === $post_status ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        if ( 'page' === $post_type && ! current_user_can( 'publish_pages' ) ) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -5925,7 +5921,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        $post_content = $post_content . '<!--more-->' . $post_more;
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $to_ping = null;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $to_ping = '';
</ins><span class="cx" style="display: block; padding: 0 10px">                 if ( isset( $content_struct['mt_tb_ping_urls'] ) ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        $to_ping = $content_struct['mt_tb_ping_urls'];
</span><span class="cx" style="display: block; padding: 0 10px">                        if ( is_array( $to_ping ) ) {
</span></span></pre></div>
<a id="trunksrcwpincludespostphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: trunk/src/wp-includes/post.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- trunk/src/wp-includes/post.php    2022-09-26 22:41:11 UTC (rev 54319)
+++ trunk/src/wp-includes/post.php      2022-09-27 01:58:43 UTC (rev 54320)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -4034,6 +4034,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">  *                                         child terms can have the same names with different parent terms,
</span><span class="cx" style="display: block; padding: 0 10px">  *                                         so the only way to connect them is using ID. Default empty.
</span><span class="cx" style="display: block; padding: 0 10px">  *     @type array  $meta_input            Array of post meta values keyed by their post meta key. Default empty.
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ *     @type string $page_template         Page template to use.
</ins><span class="cx" style="display: block; padding: 0 10px">  * }
</span><span class="cx" style="display: block; padding: 0 10px">  * @param bool  $wp_error         Optional. Whether to return a WP_Error on failure. Default false.
</span><span class="cx" style="display: block; padding: 0 10px">  * @param bool  $fire_after_hooks Optional. Whether to fire the after insert hooks. Default true.
</span></span></pre>
</div>
</div>

</body>
</html>