Îmbunătățiri pentru plugin-ul ThreeWP Broadcast
Din varii motive, am ajuns să am două blog-uri: acesta și blog.iamntz.com. Și pentru că vreau ca postările de aici să apară și pe celălalt blog, folosesc plugin-ul ăsta. În principiu își face treaba binișor, doar că sunt două probleme:
get_next_post
șiget_previous_post
returnează link-uri spre celălalt blog (caz în care vizitatorul iese de pe blog) și- În anumite situații, utilizatorul poate ajunge pe pagina-clonă în loc să fie redirectat spre pagina sursă.
Prima problemă o rezolvăm simplu printr-o clauză WHERE
în query-ul responsabil de funcțiile folosite:
<?php function excludeAdjacentBroadcasts($where) { global $wpdb; $where .= " AND p.ID NOT IN( SELECT post_id from {$wpdb->base_prefix}_3wp_broadcast_broadcastdata )"; return $where; } add_filter('get_previous_post_where', 'excludeAdjacentBroadcasts'); add_filter('get_next_post_where', 'excludeAdjacentBroadcasts');
A doua problemă o rezolvăm printr-un hook numit template_redirect
:
add_action('template_redirect', function () { global $wpdb; $broadcasted = $wpdb->get_results($wpdb->prepare(" SELECT * from {$wpdb->base_prefix}_3wp_broadcast_broadcastdata WHERE post_id=%d", get_the_ID())); if (!empty($broadcasted) && is_singular()) { $decoded = base64_decode($broadcasted[0]->data); if (!empty($decoded)) { $decodedUnserialized = maybe_unserialize($decoded); if (!empty($decodedUnserialized['linked_parent'])) { switch_to_blog($decodedUnserialized['linked_parent']['blog_id']); $redirectURL = get_permalink($decodedUnserialized['linked_parent']['post_id']); wp_redirect($redirectURL); die(); } } } });
Ce nu sunt sigur însă este dacă este nevoie să alterez și link-ul de edit, astfel încât să editeze post-ul original…
- Posted in:
- WordPress
Pai din cate stiu pluginul nu mai face inca un sync la editare, decat daca-l modifici sa faca asta. Asa ca daca modifici linkul de editare trebuie sa-l faci sa resincronizeze clona dupa editare. Nu?
Nu chiar. Face sync automat și la editări