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

<br />
&lt;?php<br />
function excludeAdjacentBroadcasts($where)<br />
{<br />
  global $wpdb;<br />
  $where .= &quot; AND p.ID NOT IN( SELECT post_id from {$wpdb-&gt;base_prefix}_3wp_broadcast_broadcastdata )&quot;;<br />
  return $where;<br />
}</p>
<p>add_filter('get_previous_post_where', 'excludeAdjacentBroadcasts');<br />
add_filter('get_next_post_where', 'excludeAdjacentBroadcasts');</p>
<p>

A doua problemă o rezolvăm printr-un hook numit template_redirect:

<br />
add_action('template_redirect', function () {<br />
  global $wpdb;<br />
  $broadcasted = $wpdb-&gt;get_results($wpdb-&gt;prepare(&quot; SELECT * from {$wpdb-&gt;base_prefix}_3wp_broadcast_broadcastdata WHERE post_id=%d&quot;, get_the_ID()));<br />
  if (!empty($broadcasted) &amp;&amp; is_singular()) {<br />
    $decoded = base64_decode($broadcasted[0]-&gt;data);<br />
    if (!empty($decoded)) {<br />
      $decodedUnserialized = maybe_unserialize($decoded);<br />
      if (!empty($decodedUnserialized['linked_parent'])) {<br />
        switch_to_blog($decodedUnserialized['linked_parent']['blog_id']);<br />
        $redirectURL = get_permalink($decodedUnserialized['linked_parent']['post_id']);<br />
        wp_redirect($redirectURL);<br />
        die();<br />
      }<br />
    }<br />
  }<br />
});<br />

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>

windows apple dropbox facebook twitter