В настоящее время я использую плагин Contact Form 7. на Worpdress Multisite.
Моя цель - использовать на всех сайтах только 7 контактную форму основного сайта из таблицы wp_post основного сайта.
В основном, чтобы основная контактная форма 7 сайта работала на всех сайтах, включая шорткоды и страницу меню администратора, без чередования файлов плагинов.
Моя идея состояла в том, чтобы перезаписать экземпляр плагина в файле functions.php с помощью add_action hook.
Вот конструктор плагинов
private function __construct( $post = null ) {
$post = get_post( $post );
if ( $post and self::post_type == get_post_type( $post ) ) {
$this->id = $post->ID;
$this->name = $post->post_name;
$this->title = $post->post_title;
$this->locale = get_post_meta( $post->ID, '_locale', true );
$properties = $this->get_properties();
foreach ( $properties as $key => $value ) {
if ( metadata_exists( 'post', $post->ID, '_' . $key ) ) {
$properties[$key] = get_post_meta( $post->ID, '_' . $key, true );
} elseif ( metadata_exists( 'post', $post->ID, $key ) ) {
$properties[$key] = get_post_meta( $post->ID, $key, true );
}
}
$this->properties = $properties;
$this->upgrade();
}
do_action( 'wpcf7_contact_form', $this );
}
Пример функции о том, как перезаписать
// define the wpcf7_contact_form callback
function action_wpcf7_contact_form( $instance ) {
// make action magic happen here...
};
// add the action
add_action( 'wpcf7_contact_form', 'action_wpcf7_contact_form', 10, 1 );
Тем не менее, класс создается, прежде чем я могу перезаписать его. Кроме того, поскольку класс конструктора является закрытым, я не думаю, что есть способ изменить его?
Другой подход, который я имел в виду, состоял в том, чтобы использовать pre_get_posts , чтобы изменить тип сообщения на основной блог. Кажется, я не могу найти хороших примеров.