Risultati della ricerca per 'Clone wordpress post'
-
-
Ciao a tutti,
dopo i due più recenti aggiornamenti di wordpress non mi funziona più un plugin che genera post di una determinata categoria derivante dalla compilazione di moduli di CF7.
L’ho controllato e ricontrollato eppure niente da fare, con il debug di wordpress mi esce il seguente errore:Fatal error: Uncaught TypeError: call_user_func_array(): Argument #1 ($callback) must be a valid callback, function “add_author_support_to_posts” not found or invalid function name in /var/www/virtual/mlnv.org/sportelodelsitadino/htdocs/wp-includes/class-wp-hook.php:324
Stack trace: 0 /var/www/virtual/mlnv.org/sportelodelsitadino/htdocs/wp-includes/class-wp-hook.php(348): WP_Hook->apply_filters() 1 /var/www/virtual/mlnv.org/sportelodelsitadino/htdocs/wp-includes/plugin.php(517): WP_Hook->do_action() 2 /var/www/virtual/mlnv.org/sportelodelsitadino/htdocs/wp-settings.php(643): do_action() 3 /var/www/virtual/mlnv.org/sportelodelsitadino/htdocs/wp-config.php(82): require_once(‘…’) 4 /var/www/virtual/mlnv.org/sportelodelsitadino/htdocs/wp-load.php(50): require_once(‘…’) 5 /var/www/virtual/mlnv.org/sportelodelsitadino/htdocs/wp-blog-header.php(13): require_once(‘…’) 6 /var/www/virtual/mlnv.org/sportelodelsitadino/htdocs/index.php(17): require(‘…’) 7 {main} thrown in /var/www/virtual/mlnv.org/sportelodelsitadino/htdocs/wp-includes/class-wp-hook.php on line 324
Questo di seguito alla fine è il codice php del plugin, so che è lunghetto ma se qualcuno gentilmente mi aiuta a trovar l’errore gliene sarei molto grato.
Grazie infinite
Enrico<?php if (!defined('ABSPATH')) { exit; } /** * Our main plugin class */ class CF7_To_WP { /** * The single instance of cf7_to_wp. * @var object */ private static $_instance = null; /** * Settings class object * @var object */ public $settings = null; /** * The version number. * @var string */ public $_version; /** * The token. * @var string */ public $_token; /** * The main plugin file. * @var string */ public $file; /** * The main plugin directory. * @var string */ public $dir; /** * The plugin assets directory. * @var string */ public $assets_dir; /** * The plugin assets URL. * @var string */ public $assets_url; /** * Our post type slug. * * @var string */ private $post_type = 'cf7_form_messages'; /** * Constructor function. * @access public */ public function __construct($file = '', $version = '0.1') { $this->_version = $version; $this->_token = 'cf7_to_wp'; // Load plugin environment variables $this->file = $file; $this->dir = dirname($this->file); $this->assets_dir = trailingslashit($this->dir) . 'assets'; $this->assets_url = esc_url(trailingslashit(plugins_url('/assets/', $this->file))); // Handle localization $this->load_plugin_textdomain(); add_action('init', array($this, 'load_localization'), 0); } /** * Initialize all the things! */ public function init() { // Register Messages post type. add_action('init', array($this, 'register_form_msg_post_type')); add_filter('add_menu_classes', array($this, 'menu_msg_form_bubble')); add_filter('post_row_actions', array($this, 'action_row_for_msg_posts'), 10, 2); add_action('admin_init', [$this, 'maybe_mark_form_message_as_read']); add_filter('wpcf7_verify_nonce', '__return_true'); // Hook into CF7 actions. add_filter('wpcf7_editor_panels', array($this, 'add_cf7_panel')); add_action('wpcf7_after_save', array($this, 'save_cf7_data'), 50, 1); add_action('wpcf7_mail_sent', array($this, 'create_post_on_form_submission'), 50, 1); add_action('wpcf7_mail_failed', array($this, 'create_post_on_form_submission'), 50, 1); add_action('init', 'add_author_support_to_posts'); add_filter('wpcf7_verify_nonce', '__return_true'); } /** * Load plugin localisation */ public function load_localization() { load_plugin_textdomain('cf7_to_wp', false, dirname(plugin_basename($this->file)) . '/lang/'); } /** * Load plugin textdomain */ public function load_plugin_textdomain() { $domain = 'cf7_to_wp'; $locale = apply_filters('plugin_locale', get_locale(), $domain); load_textdomain($domain, WP_LANG_DIR . '/' . $domain . '/' . $domain . '-' . $locale . '.mo'); load_plugin_textdomain($domain, false, dirname(plugin_basename($this->file)) . '/lang/'); } /** * Register our post type to store messages. */ public function register_form_msg_post_type() { register_post_type( $this->post_type, array( 'labels' => array( 'name' => __('Pratiche', 'cf7_to_wp'), 'singular_name' => __('Pratica', 'cf7_to_wp'), 'add_new' => __('Aggiungi nuova', 'cf7_to_wp'), 'add_new_item' => __('Aggiungi nuova pratica', 'cf7_to_wp'), 'edit' => __('Modifica', 'cf7_to_wp'), ), 'description' => 'Pratiche e Servizi', 'has_archive' => true, 'publicly_queryable' => true, 'capability_type' => 'post', 'menu_position' => 32, 'show_ui' => true, 'show_in_menu' => true, 'public' => true, 'query_var' => true, 'menu_icon' => 'dashicons-buddicons-pm', 'taxonomies' => array('category'), 'supports' => array( 'author', 'title', 'category', 'editor', 'excerpt', 'trackbacks', 'page-attributes', 'custom-fields', 'thumbnail', 'sticky', ), ) ); } /** * Add bubble to admin menu * * @param array $menu * @return array $menu */ public function menu_msg_form_bubble($menu) { $form_messages_count = wp_count_posts($this->post_type); $pending_count = $form_messages_count->draft + $form_messages_count->pending; foreach ($menu as $menu_key => $menu_data) { if ("edit.php?post_type={$this->post_type}" !== $menu_data[2]) { continue; } $menu[$menu_key][0] .= " <span class='update-plugins count-$pending_count'><span class='plugin-count'>" . number_format_i18n($pending_count) . '</span></span>'; } return $menu; } /** * Add "Mark as read" action for our post type * * @param array $actions * @param WP_Post $post * @return array $actions */ public function action_row_for_msg_posts($actions, $post) { if ($post->post_type === $this->post_type && $post->post_status !== 'publish') { $actions['mark_as_read'] = sprintf( '<a href="%s" class="aria-button-if-js" aria-label="%s">%s</a>', wp_nonce_url("edit.php?post_type={$this->post_type}&action=mark_as_read&message_id={$post->ID}", "mark_message_as_read_{$post->ID}"), esc_attr(__('Mark as read', 'cf7_to_wp')), __('Mark as read', 'cf7_to_wp') ); } return $actions; } /** * Mark form message as read */ public function maybe_mark_form_message_as_read() { if (isset($_GET['action']) && $_GET['action'] == 'mark_as_read' && isset($_GET['message_id'])) { $message_id = (int) $_GET['message_id']; if (isset($_GET['_wpnonce']) && wp_verify_nonce($_GET['_wpnonce'], "mark_message_as_read_{$message_id}")) { $updated_post = wp_update_post( array( 'ID' => $message_id, 'post_status' => 'publish', ) ); wp_redirect(wp_get_referer()); exit(); } } } /** * Add new panel to CF7 form settings * * @param array $panels * @return array */ public function add_cf7_panel($panels) { $panels['cf7-to-wp'] = array( 'title' => __('Salva messaggi', 'cf7_to_wp'), 'callback' => array($this, 'cf7_to_wp_form_metabox'), ); return $panels; } /** * Output the content of our panel/metabox * * @param WPCF7_ContactForm $post CF7 object */ public function cf7_to_wp_form_metabox($post) { $id = $post->id(); $cf7towp = get_post_meta($id, '_cf7towp', true); $cf7towp = wp_parse_args( $cf7towp, array( 'active' => 0, 'title' => '', 'content' => '', 'category' => 0, ) );?> <p style="margin-bottom:1em; font-size:1.25em;"> <?php _e('Abilitando la casella sottostante ogni modulo inviato compilato verrà pubblicato come nuovo articolo "Pratiche" privato.', 'cf7_to_wp');?> </p> <div class="mail-field" style="margin-bottom:1em;"> <label for="cf7towp-active"> <input type="checkbox" id="cf7towp-active" name="wpcf7-cf7towp-active" value="1" <?php checked($cf7towp['active'], 1);?> /> <strong><?php echo esc_html(__('Salvare i moduli compilati come articoli "Pratiche"?', 'cf7_to_wp')); ?></strong> </label> </div> <div class="pseudo-hr"></div> <div class="mail-field"> <p class="description"> <label for="cf7towp-category"><?php echo esc_html(__('Categoria dell\'articolo', 'cf7_to_wp')); ?></label> <select id="cf7towp-category" name="wpcf7-cf7towp-category"> <?php $this->get_category_options($id)?> </select> </p> </div> <div class="mail-field"> <p class="description"> <label for="cf7towp-title"><?php echo esc_html(__('Titolo dell\'articolo', 'cf7_to_wp')); ?></label> <input type="text" id="cf7towp-title" name="wpcf7-cf7towp-title" class="large-text" value="<?php echo esc_attr($cf7towp['title']); ?>" /> </p> </div> <div class="mail-field"> <p class="description"> <label for="cf7towp-content"><?php echo esc_html(__('Contenuto dell\'articolo', 'cf7_to_wp')); ?></label> <textarea id="cf7towp-content" name="wpcf7-cf7towp-content" cols="100" rows="10" class="large-text"><?php echo esc_attr($cf7towp['content']); ?></textarea> </p> </div> <hr> <p class="description" style="margin-top:.5em;"> <span style="float:left; width:60%;"> <?php _e('Usa i classici CF7 [mail-tag] per i contenuti dinamici nel titolo e nel contenuto (li trovi sulla tab Mail).', 'cf7_to_wp');?> </span> <span style="text-align:right; float:right; width:40%;"> <?php $credits_link = '<a target="_blank" href="https://github.com/psaikali/contact-form-to-wp-posts">Fonte</a>'; printf(__('A Contact Form 7 addon by %1$s', 'cf7_to_wp'), $credits_link); ?> </span> </p> <hr> <?php } /** * Get category field data */ public function get_category_options($id) { $cf7towp = get_post_meta($id, '_cf7towp', true); $cf7towp = wp_parse_args( $cf7towp, array( 'active' => 0, 'title' => '', 'content' => '', 'category' => 0, ) ); $args = array( 'taxonomy' => 'category', 'hide_empty' => false, ); $terms = get_terms($args); foreach ($terms as $term) { $options .= '<option value="' . $term->term_id . '" ' . selected($cf7towp['category'], $term->term_id, true) . '>' . $term->name . '</option>'; } echo $options; } /** * Save metabox/tab data when CF7 form settings page is saved. * * @param WPCF7_ContactForm $contact_form */ public function save_cf7_data($contact_form) { global $user_id; $user_id = get_current_user_id(); $id = $contact_form->id(); $cf7towp = array(); $cf7towp['active'] = (!empty($_POST['wpcf7-cf7towp-active'])); if (isset($_POST['wpcf7-cf7towp-title'])) { $cf7towp['title'] = sanitize_text_field($_POST['wpcf7-cf7towp-title']); } if (isset($_POST['wpcf7-cf7towp-content'])) { $cf7towp['content'] = wp_kses_post($_POST['wpcf7-cf7towp-content']); } if (isset($_POST['wpcf7-cf7towp-category'])) { $cf7towp['category'] = wp_kses_post($_POST['wpcf7-cf7towp-category']); } update_post_meta($id, '_cf7towp', $cf7towp); } /** * Create a Messages post when form is submitted * * @param WPCF7_ContactForm $contact_form */ public function get_current_user_id() { if (class_exists('Jwt_Auth_Public')) { $jwt = new \Jwt_Auth_Public('jwt-auth', '1.1.0'); $token = $jwt->validate_token(false); if (\is_wp_error($token)) { return false; } return $token->data->user->id; } else { return false; } } public function create_post_on_form_submission($contact_form) { $form_post = $contact_form->id(); $cf7towp_data = get_post_meta($form_post, '_cf7towp', true); if ($cf7towp_data['active'] === true) { $submission = WPCF7_Submission::get_instance(); if ($submission) { $meta = array(); $meta['ip'] = $submission->get_meta('remote_ip'); $meta['ua'] = $submission->get_meta('user_agent'); $meta['url'] = $submission->get_meta('url'); $meta['date'] = date_i18n(get_option('date_format'), $submission->get_meta('timestamp')); $meta['time'] = date_i18n(get_option('time_format'), $submission->get_meta('timestamp')); } $post_title_template = $cf7towp_data['title']; $post_content_template = $cf7towp_data['content']; $post_category[] = $cf7towp_data['category']; $post_title = wpcf7_mail_replace_tags( $post_title_template, array( 'html' => true, 'exclude_blank' => true, 'has_archive' => true, ) ); $post_content = wpcf7_mail_replace_tags( $post_content_template, array( 'html' => true, 'exclude_blank' => true, 'has_archive' => true, ) ); $new_form_msg = wp_insert_post( array( 'post_type' => $this->post_type, 'post_title' => $post_title, 'post_content' => $post_content, 'post_author' => $current_user -> ID, 'post_status' => 'private', 'has_archive' => true, 'post_category' => $post_category, ) ); if ($submission) { update_post_meta($new_form_msg, 'cf7towp_meta', $meta, ); } } } /** * Main cf7_to_wp singleton instance * * Ensures only one instance of cf7_to_wp is loaded or can be loaded. * * @static * @see cf7_to_wp() * @return Main cf7_to_wp instance */ public static function instance($file = '', $version = '0.1') { if (is_null(self::$_instance)) { self::$_instance = new self($file, $version); } return self::$_instance; } /** * Cloning is forbidden. * */ public function __clone() { _doing_it_wrong(__FUNCTION__, __('Cheatin’ huh?'), $this->_version); } /** * Unserializing instances of this class is forbidden. * */ public function __wakeup() { _doing_it_wrong(__FUNCTION__, __('Cheatin’ huh?'), $this->_version); } }
-
Buongiorno a tutti
ho questo problema: l’icona del menù a tendina su mobile non viene visualizzata.
Questo capita solo sul sito “live”, se sono loggato in WordPress invece si vede. Il menù funziona, se vado sul punto esatto e clicco il menù si apre, ma chiaramente se qualcuno non lo sa è come se non ci fossa.
Ho provato a ispezionare con Chrome e ho riscontrato alcune differenze tra loggato e live nel punto dell’icona menù.
Lasciò il link con le differenze riscontrate.
Incollo anche le informazioni di sistema ricavate da Elementor. Utilizzo il tema Hello Elementor.
Grazie e buona giornata.https://psicologoautorevole.it/wp-content/uploads/2023/09/differenze-menu.jpg
Informazioni di sistema:
== Server Environment ==
Operating System: Linux
Software: Apache
MySQL version: Source distribution v5.7.39-42
PHP Version: 7.4.33
PHP Memory Limit: 768M
PHP Max Input Vars: 3000
PHP Max Post Size: 256M
GD Installed: Yes
ZIP Installed: Yes
Write Permissions: All right
Elementor Library: Connected== Theme ==
Name: Hello Elementor
Version: 2.8.1
Author: Elementor Team
Child Theme: No== Active Plugins ==
Elementor
Version: 3.16.3
Author: Elementor.comGTM4WP Version: 1.18.1 Author: Thomas Geiger iubenda | All-in-one Compliance for GDPR / CCPA Cookie Consent + more Version: 3.7.5 Author: iubenda Newsletter, SMTP, Email marketing and Subscribe forms by Brevo Version: 3.1.70 Author: Brevo SiteGround Central Version: 3.0.1 Author: SiteGround SiteGround Optimizer Version: 7.4.1 Author: SiteGround SiteGround Security Version: 1.4.5 Author: SiteGround Social Chat Version: 7.1.5 Author: QuadLayers Stop Spammers Version: 2023.4.1 Author: Trumani Xpro Elementor Addons Version: 1.3.8 Author: Xpro Yoast SEO Version: 21.1 Author: Team Yoast== Registro ==
JS: showing 11 of 11JS: 2023-08-21 15:31:07 [error X 155][https://psicologoautorevole.it/wp-content/plugins/elementor/assets/lib/pickr/pickr.min.js?ver=1.5.0:2:14799] Cannot read properties of null (reading ‘clone’)
JS: 2023-08-21 15:31:09 [error X 5][https://psicologoautorevole.it/wp-content/plugins/elementor/assets/lib/pickr/pickr.min.js?ver=1.5.0:2:19552] Cannot read properties of null (reading ‘changestop’)
JS: 2023-08-23 12:29:54 [error X 11][https://psicologoautorevole.it/wp-content/plugins/elementor/assets/js/editor.min.js?ver=3.15.3:3:917217] elementorFrontend is not defined
JS: 2023-08-30 08:44:09 [error X 6][https://psicologoautorevole.it/wp-includes/js/jquery/jquery.min.js?ver=3.7.0:2:28722] elementor_new_template_form_controls is not defined
JS: 2023-08-31 13:32:10 [error X 1][https://psicologoautorevole.it/wp-content/plugins/xpro-elementor-addons/assets/js/xpro-widgets.js?ver=1.3.8:1:21513] Cannot read properties of undefined (reading ‘size’)
JS: 2023-09-01 12:20:34 [error X 19][https://psicologoautorevole.it/wp-content/plugins/elementor/assets/js/frontend-modules.min.js?ver=3.15.3:2:12920] Cannot read properties of undefined (reading ‘attributes’)
JS: 2023-09-01 12:22:30 [error X 1][https://psicologoautorevole.it/wp-content/plugins/elementor/assets/js/editor.min.js?ver=3.15.3:3:642692] Cannot read properties of undefined (reading ‘isDesignable’)
JS: 2023-09-01 15:23:24 [error X 1][https://psicologoautorevole.it/wp-content/plugins/elementor/assets/js/editor.min.js?ver=3.15.3:3:670813] elementorFrontend.elements.window.jQuery is not a function
JS: 2023-09-10 23:47:55 [error X 3][https://psicologoautorevole.it/wp-content/plugins/elementor/assets/js/editor.min.js?ver=3.15.3:3:838767] Cannot convert undefined or null to object
JS: 2023-09-12 08:17:47 [error X 1][https://psicologoautorevole.it/wp-content/plugins/elementor/assets/js/responsive-bar.min.js?ver=3.15.3:2:5951] Cannot read properties of null (reading ‘config’)
JS: 2023-09-15 10:44:00 [error X 2][https://psicologoautorevole.it/wp-includes/js/jquery/jquery.min.js?ver=3.7.0:2:28722] Cannot read properties of undefined (reading ‘value’)== Elementor – Compatibility Tag ==
Xpro Elementor Addons: Compatibilità non specificata
-
Salve a tutti…
e spero di porre alla vostra attenzione un argomento cruciale: la sicurezza…
spero anche non me ne vogliano i moderatori se sarò troppo prolisso…
essendo novizio: se sbaglio mi correggerete…nel autunno 2016 ho subito un primo attacco bruteforce ad un mio sito WP…
fortunatamente (tenevo costantemente sotto controllo le statistiche ed i tentativi di accesso ) me ne sono accorto e l’ho stroncato mettendo rapidamente in atto le contromisure …
purtroppo a gennaio 2017 ho subito un secondo attacco e questa volta con conseguenze catastrofiche…
sono riusciti ad impossessarsi dell’accesso agli account mail e perfino a miei dati c/c e carte di debito…
i danni a livello bancario sono stati modesti, ma il mio lavoro con wordpress è andato in fumo in un attimo… sono riusciti a sottrarmi il controllo dei DNS (reindirizzandoli su siti facks) e per recuperarli dopo 3 denunce alla polizia postale ci sono voluti due mesi di lotta con i providers-registrants i domini per riprendere il controllo del pannello le passwords e ripristinare il tutto…
un paio d’anni di lavoro polverizzati e uno stop di oltre 6 mesi prima di recuperare un minimo di produttività… un vero incubo !Certamente ho commesso diversi errori…
ad esempio è sbagliato pensare : “posso anche lasciare le porte aperte tanto non hanno nulla da rubare” … ho constatato che purtroppo c’è al mondo chi lo fa per vendetta o per pura idiozia…
quindi spesso il “ladro/delinquente” non si limita a entrati in casa e derubarti ma si diverte a distruggere tutto quello che può…
sbagliando si impara…
sulla base della disastrosa esperienza sto riconsiderando tutti gli aspetti inerenti la sicurezza che coinvolgono il mio lavoro con wordpress.
Vi espongo quindi i miei ragionamenti per avere, da chi ne sa più di me, una conferma : se mi sto muovendo correttamente o se sto ripetendo errori che potrei pagare di nuovo in futuro a caro prezzo e stress.Dal momento che non si può considerare a rischio 0 la eventualità che qualcuno riesca a prendere in qualche modo controllo della nostra installazione WP (database & cartella public_html; Hosting/pannello di controllo ) o inquinare il database, assumo che il backup di tutti i dati debba necessariamente essere effettuato con il massimo scrupolo e frequenza. Spero che su questo la maggiorparte di voi concordino…
se il backup viene effettuato sulla stessa macchina fisica su cui sono presenti i vostri dati in caso di guasto dell’ HD o del server (remota ma non impossibile), ovvero, in caso di guasti tecnici… siamo fregati.
Inizialmente ho pensato quindi a scaricare i backup sul mio PC locale in ufficio …
a parte il fatto che la sicurezza su un PC usato normalmente in un normale ufficio (dove tranquillamente e quotidianamente si aprono mail ed allegati (e magari si naviga sul web) è molto labile, anche provvedendo in locale a fornirsi di una macchina configurata in modalità server e con tutti i crismi della sicurezza applicabili …
ci si scontra con la realtà dell’ obsolescenza delle reti-dati-ADSL Italiche…
in alcune località anche le prestazioni di alice 20mega sono un sogno…
chi ha provato a fare un download ed un upload di un Backup di un sito di medie dimensioni con le correnti velocità di upload si sarà accorto che ci vuole una notte intera… e se la connessione cade… si ricomincia come nel gioco dell’oca..
fino a prima del’ attacco avevo un hosting shared con discrete prestazioni e ottimo rapporto prezzo qualità…
ora sto facendo dei test utilizzando due distinti hosting VPS che alla fine mi costeranno poco di più…
sul primo gira solo l’installazione “in produzione”…
sul 2° vengono stokati i backup e gira un clone della installazione “in produzione” in modalità che non è accessibile al pubblico…
qualcuno potrebbe dire: “perché non scarichi i backup su un cloud (dropbox vs google vs mega, tanto per non fare nomi) ? ”
perché sul 2° server VPS ci faccio girare un clone identico (ricavato ed aggiornato dai salvataggi frequenti della 1°) che mi permette di testare prima di implementarlo sull 1° VPS (quello attualmente “in produzione”) tutti gli aggiornamenti che dovrò effettuare…
chi non ha mai avuto dei guai dopo aver aggiornato un plugin o un tema o anche semplici parti di codice : alzi la mano !
Le comunicazioni fra i due server che fisicamente sono separati in luoghi. ovvero in data-center diversi, viaggiano su fibra ottica (verae reale ! …non quella che reclamizzano in Italia e che di ottico non ha proprio nulla) a 400MB costanti e garantiti …
il che vuol dire che un backup e/o restore comportano solo qualche minuto.
Posso inoltre controllare tutto (compreso il cpannel e la WP Admin dashboard), con un qualunque portatile, anche con connessioni precarie e/o lente, tramite NoMachine o VNC… da qualunque luogo io mi trovi al momento … anche su Italo e/o frecce FS e/o autostrada.
Al momento i test mi danno risultati più che soddisfacenti…Che vi sembra di questo modus operandi ?
Qualcuno di voi ha suggerimenti e/o esperienze in questo campo e sulla base del mio ragionamento ?
In base alla vostra esperienza: c’è di meglio ?Ringrazio tutti per la pazienza…
-
Salve spero che questa sia la sezione giusta, ho un sito wordpress in remoto e un suo clone in locale l’unica differenza dal sito remoto sta nel fatto che ha meno pagine.
Vorrei aggiornarlo riportando il locale tutti gli articoli/pagine che mancano prima di testare nuovi plugin ed eventualmente il tema.
Ho trovato molte guide, anche su questo sito, per partire da zero, la mia domanda è:
è necessario ripartire da capo o c’è un metodo per poter aggiungere solo i post e le pagine che mancano?Grazie
-