Î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:

  1. get_next_post și get_previous_post returnează link-uri spre celălalt blog (caz în care vizitatorul iese de pe blog) și
  2. Î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…

2 Comentarii to “Îmbunătățiri pentru plugin-ul ThreeWP Broadcast”

  1. 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?

  2. Nu chiar. Face sync automat și la editări :)

Show trackbacks

Ți-a plăcut articolul? Lasă un comentariu!

You can insert code snippets using BBcode:
[js].[/js] [html].[/html] [php].[/php] [css].[/css]
You can also use some HTML tags:
<blockquote>.</blockquote> <code>.</code> <a href="">.</a> <strong>.</strong> <em>.</em>