: str_replace(): Passing null to parameter #2 ($replace) of type array|string is deprecated in
'/docs/setup-form-confirmation-wpforms/',
'/docs/how-to-create-conditional-form-confirmations/',
'confirmation message' => [
'/docs/setup-form-confirmation-wpforms/',
'/docs/how-to-create-conditional-form-confirmations/',
'/docs/setup-form-confirmation-wpforms/',
'/docs/how-to-create-conditional-form-confirmations/',
'go to url (redirect)' => [
'/docs/setup-form-confirmation-wpforms/',
'/docs/how-to-create-conditional-form-confirmations/',
'/docs/setup-form-confirmation-wpforms/',
'/docs/how-to-create-conditional-form-confirmations/',
'conditional confirmation' => [
'/docs/setup-form-confirmation-wpforms/',
'/docs/how-to-create-conditional-form-confirmations/',
'/docs/calculations-addon/',
'/docs/building-formulas-with-the-calculations-addon/',
'/calculations-formula-cheatsheet/',
'/docs/calculations-addon/',
'/docs/building-formulas-with-the-calculations-addon/',
'/calculations-formula-cheatsheet/',
'/docs/calculations-addon/',
'/docs/building-formulas-with-the-calculations-addon/',
'/calculations-formula-cheatsheet/',
'conditional calculation' => [
'/docs/calculations-addon/',
'/docs/building-formulas-with-the-calculations-addon/',
'/calculations-formula-cheatsheet/',
'/docs/lead-forms-addon/',
'/docs/how-to-install-and-use-form-abandonment-with-wpforms/',
'/docs/how-to-install-and-use-form-abandonment-with-wpforms/',
'/docs/how-to-install-and-use-form-abandonment-with-wpforms/',
'/docs/how-to-install-and-use-form-abandonment-with-wpforms/',
'/docs/how-to-install-and-use-the-post-submissions-addon-in-wpforms/',
'/docs/how-to-install-and-use-the-post-submissions-addon-in-wpforms/',
'/docs/how-to-install-and-use-the-post-submissions-addon-in-wpforms/',
'/docs/how-to-install-and-use-the-post-submissions-addon-in-wpforms/',
'/docs/how-to-install-and-use-the-post-submissions-addon-in-wpforms/',
'/docs/how-to-install-and-use-user-registration-addon-with-wpforms/',
'/docs/how-to-set-up-custom-user-meta-fields/',
'/docs/how-to-install-and-use-user-registration-addon-with-wpforms/',
'/docs/how-to-set-up-custom-user-meta-fields/',
'/docs/how-to-install-and-use-user-registration-addon-with-wpforms/',
'/docs/how-to-set-up-custom-user-meta-fields/',
'/docs/how-to-install-and-use-user-registration-addon-with-wpforms/',
'/docs/how-to-set-up-custom-user-meta-fields/',
'/docs/how-to-install-and-use-user-registration-addon-with-wpforms/',
'/docs/how-to-set-up-custom-user-meta-fields/',
'/docs/how-to-install-and-use-the-surveys-and-polls-addon/',
'/docs/how-to-install-and-use-the-surveys-and-polls-addon/',
'/docs/how-to-install-and-use-the-surveys-and-polls-addon/',
'conversational forms' => [
'/docs/how-to-install-and-use-the-conversational-forms-addon/',
'/docs/how-to-install-and-use-the-conversational-forms-addon/',
'/docs/how-to-install-and-use-the-form-locker-addon-in-wpforms/',
'/developers/how-to-display-remaining-entry-limit-number/',
'password protection' => [
'/docs/how-to-install-and-use-the-form-locker-addon-in-wpforms/',
'/developers/how-to-display-remaining-entry-limit-number/',
'/docs/how-to-install-and-use-the-form-locker-addon-in-wpforms/',
'/developers/how-to-display-remaining-entry-limit-number/',
'/docs/how-to-install-and-use-the-form-locker-addon-in-wpforms/',
'/developers/how-to-display-remaining-entry-limit-number/',
'/docs/how-to-install-and-use-the-form-locker-addon-in-wpforms/',
'/developers/how-to-display-remaining-entry-limit-number/',
'/docs/how-to-install-and-use-the-form-locker-addon-in-wpforms/',
'/developers/how-to-display-remaining-entry-limit-number/',
'/docs/how-to-install-and-use-the-form-locker-addon-in-wpforms/',
'/developers/how-to-display-remaining-entry-limit-number/',
'/docs/how-to-install-and-use-the-form-locker-addon-in-wpforms/',
'/developers/how-to-display-remaining-entry-limit-number/',
'/docs/how-to-install-and-use-the-form-pages-addon/',
'/docs/how-to-install-and-use-the-save-and-resume-addon-with-wpforms/',
'/docs/how-to-install-and-use-the-save-and-resume-addon-with-wpforms/',
'/docs/how-to-install-and-use-the-save-and-resume-addon-with-wpforms/',
'/docs/how-to-install-and-use-the-save-and-resume-addon-with-wpforms/',
'/docs/how-to-install-and-use-the-save-and-resume-addon-with-wpforms/',
'/docs/how-to-install-and-use-the-webhooks-addon-with-wpforms/',
'/docs/install-use-aweber-addon-wpforms/',
'/docs/how-to-install-and-use-campaign-monitor-addon-with-wpforms/',
'/docs/how-to-connect-constant-contact-with-wpforms/',
'/docs/convertkit-addon/',
'/docs/how-to-install-and-use-the-drip-addon-in-wpforms/',
'/docs/how-to-install-and-use-getresponse-addon-with-wpforms/',
'/docs/google-sheets-addon/',
'/docs/google-permissions/',
'/docs/install-use-mailchimp-addon-wpforms/',
'/docs/install-use-mailerlite-addon-wpforms/',
'/docs/how-to-install-and-use-zapier-addon-with-wpforms/',
'/docs/how-to-install-and-use-the-salesforce-addon-with-wpforms/',
'/docs/how-to-install-and-use-the-sendinblue-addon-with-wpforms/',
'/docs/how-to-install-and-use-the-hubspot-addon-in-wpforms/',
'/docs/how-to-install-and-use-zapier-addon-with-wpforms/',
'/docs/how-to-install-and-use-the-webhooks-addon-with-wpforms/',
'/docs/google-sheets-addon/',
'/docs/how-to-install-and-use-zapier-addon-with-wpforms/',
'/docs/how-to-install-and-use-the-webhooks-addon-with-wpforms/',
'/docs/google-sheets-addon/',
'/docs/how-to-install-and-use-zapier-addon-with-wpforms/',
'/docs/how-to-install-and-use-the-webhooks-addon-with-wpforms/',
'/docs/how-to-install-and-use-zapier-addon-with-wpforms/',
'/docs/how-to-install-and-use-the-webhooks-addon-with-wpforms/',
'/docs/google-sheets-addon/',
'/docs/paypal-commerce-addon/',
'/docs/testing-payments-with-the-paypal-commerce-addon/',
'/docs/install-use-paypal-addon-wpforms/',
'/docs/how-to-test-paypal-payments-before-accepting-real-payments/',
'/docs/how-to-allow-users-to-choose-a-payment-method-on-your-form/',
'/docs/using-stripe-with-wpforms-lite/',
'/docs/how-to-install-and-use-the-stripe-addon-with-wpforms/',
'/docs/how-to-test-stripe-payments-on-your-site/',
'/docs/how-to-install-and-use-the-authorize-net-addon-with-wpforms/',
'/docs/how-to-install-and-use-the-authorize-net-addon-with-wpforms/',
'/docs/how-to-install-and-use-the-square-addon-with-wpforms/',
'/docs/how-to-test-square-payments-on-your-site/',
'/docs/how-to-use-form-revisions-in-wpforms/',
* Get context (recommended) docs.
* @return array Docs recommended by search terms.
public function get_context_docs() {
if ( empty( $this->docs ) ) {
$docs_links = $this->get_context_docs_links();
foreach ( $docs_links as $word => $links ) {
$docs[ $word ] = $this->get_doc_ids( $links );
* @param string $link Absolute link to the doc without the domain part.
* @return array Array with doc id as element.
public function get_doc_id( $link ) {
_deprecated_function( __METHOD__, '1.8.3 of the WPForms plugin', __CLASS__ . '::get_doc_id_int()' );
if ( empty( $this->docs ) ) {
static function( $doc ) use ( $link ) {
return ! empty( $doc['url'] ) && $doc['url'] === 'https://wpforms.com' . $link;
return array_keys( $result );
* @param string $link Absolute link to the doc without the domain part.
private function get_doc_id_int( $link ) {
if ( empty( $this->docs ) ) {
foreach ( $this->docs as $id => $doc ) {
if ( ! empty( $doc['url'] ) && $doc['url'] === 'https://wpforms.com' . $link ) {
* @param array $links Array of the doc links.
public function get_doc_ids( $links ) {
foreach ( $links as $link ) {
$ids[] = $this->get_doc_id_int( $link );
* Output help modal markup.
public function output() {
// phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
'docs_url' => 'https://wpforms.com/docs/',
'support_ticket_url' => 'https://wpforms.com/account/support/',
'upgrade_url' => 'https://wpforms.com/pricing/',