web-dev-qa-db-ja.com

アクション/フィルターを介してプラグインから別のプラグインに値を取得する方法

URLを短くするプラグイン「URL短縮」があります。ソーシャルメディアに投稿を自動公開するための別のプラグイン「ソーシャルメディア自動公開」があります。しかし、このプラグインでは短いURLを使用できませんが、代わりに「domain.tld/postname /」として設定されているパーマリンクを使用します。ここで私が欲しいのは、投稿を公開するときに、上記の1番目のプラグインによって生成されたショートリンクを2番目のプラグインで使用することです。私はプログラミング/コーディングにまったく初心者なので、どんな助けでもありがたいです。これは私がshorlinkとaction/filterフックを生成すると思うファイルです:pub_get_shortlink.php

<?php
global $wp_query;
$shortlink = '';
$options = $this->plugin_option;
/*
    Ensure shortener is loaded.. 
    i.e all options are set correctly
    Abort otherwise
*/
if ( !$this->shortener_loader() ){
    return '';
}

/*
    Page type switches
*/
if ($context == 'query') {
    if ( is_singular() ) {
        $id = $wp_query->get_queried_object_id();
        $context = 'post';
    } elseif ( is_front_page() ) {
        $context = 'blog';
    } else {
        return '';
    }
} 
$home_url = get_option('home');
/*
    If Homepage
*/
if ($context == 'blog') {
    if ( empty($id) )
        $url = $home_url;

    if ( $options->get('urlservice') != 'yourls' ){
        $shortlink = $this->shortener->generate($url);
    }
    return $shortlink;    
}

/*
    If post
*/
$post = get_post($id);
if ( empty($post) ){
    return '';
}  
/*
    Set up post details
*/
$post_id = $post->ID;
$post_type = $post->post_type;
$post_status = $post->post_status;
$url = '';
$saved_url = get_post_meta($post_id, 'shorturl', true);
/*
 ************************
 *
 * Main Shortening Work
 *
 ************************
 */
//check prior generation and publish status
if (empty($saved_url) && ($post_status == 'publish' || $transition == true) ){
    //Add 'Generating' Word stub to prevent generation loops (esp. Yourls)
    update_post_meta($post_id, 'shorturl', 'Generating...');
    //Use permalinks
    if ($options->get('useslug')=='yes'){
        $url = get_permalink($post_id);
        if ($url){
            $shortlink = $this->shortener->generate($url);
        }
    //Use IDs
    }else{
        switch ($post_type){
            case 'post' : $url = $home_url."/index.php?p=".$post_id; break;
            case 'page' : $url = $home_url."/index.php?page_id=".$post_id; break;
            default : break;
        }
        if ($url){
            $shortlink = $this->shortener->generate($url);
        }
    }    
    /*
     ***********************
     * Allow other plugins to use generated shortlink (1st generation) 
     ************************
     */
    if (!empty($shortlink)){
        do_action('fts_use_shortlink', $post_id, $shortlink); 
    } 
//assign saved URL if already generated    
} elseif (!empty($saved_url)) {
    $shortlink = $saved_url;
}
//Update Custom Field
if (empty($saved_url) && !empty($shortlink)){
    update_post_meta($post_id, 'shorturl', $shortlink);
}elseif( empty($saved_url) ){
    //remove 'Generating' Word stub in case generation failed
    delete_post_meta($post_id, 'shorturl', 'Generating...');
}
//Return Nice ID if shortlink is still empty
if ($options->get('niceid') == 'yes' && empty($shortlink)){
    $shortlink = $home_url.$options->get('niceid_prefix').$post_id;
}
/*
 ***********************
 * Allow other plugins to filter output
 ************************
 */
if (!empty($shortlink)){
    apply_filters('fts_filter_shortlink', $post_id, $shortlink); 
}    
/*
 ***********************
 * Finally!
 ************************
 */
return $shortlink;
?>

そして、これは2番目のプラグインに投稿へのリンクを通知するコード行です:$ link = get_permalink($ postpp-> ID);完全なコードは次のとおりです:publish.php

<?php 
if( !defined('ABSPATH') ){ exit();}
/*add_action('publish_post', 'xyz_link_publish');
add_action('publish_page', 'xyz_link_publish');

$xyz_smap_future_to_publish=get_option('xyz_smap_std_future_to_publish');

if($xyz_smap_future_to_publish==1)
    add_action('future_to_publish', 'xyz_link_smap_future_to_publish');

function xyz_link_smap_future_to_publish($post){
    $postid =$post->ID;
    xyz_link_publish($postid);
}*/
add_action(  'transition_post_status',  'xyz_link_smap_future_to_publish', 10, 3 );

function xyz_link_smap_future_to_publish($new_status, $old_status, $post){

    if(!isset($GLOBALS['smap_dup_publish']))
        $GLOBALS['smap_dup_publish']=array();
    $postid =$post->ID;
    $get_post_meta=get_post_meta($postid,"xyz_smap",true);                           // prevent duplicate publishing
    $post_permissin=get_option('xyz_smap_post_permission');
    $post_Twitter_permission=get_option('xyz_smap_twpost_permission');
    $lnpost_permission=get_option('xyz_smap_lnpost_permission');

    if(isset($_POST['xyz_smap_post_permission']))
        $post_permissin=intval($_POST['xyz_smap_post_permission']);
    if(isset($_POST['xyz_smap_twpost_permission']))
        $post_Twitter_permission=intval($_POST['xyz_smap_twpost_permission']);
    if(isset($_POST['xyz_smap_lnpost_permission']))
        $lnpost_permission=intval($_POST['xyz_smap_lnpost_permission']);
    if(!(isset($_POST['xyz_smap_post_permission']) || isset($_POST['xyz_smap_twpost_permission']) || isset($_POST['xyz_smap_lnpost_permission']))) 
    {

        if($post_permissin == 1 || $post_Twitter_permission == 1 || $lnpost_permission == 1 ) {

            if($new_status == 'publish')
            {
                if ($get_post_meta == 1 ) {
                    return;
                }
            }
            else return;
        }
    }
    if($post_permissin == 1 || $post_Twitter_permission == 1 || $lnpost_permission == 1 )
    {
        if($new_status == 'publish')
        {
            if(!in_array($postid,$GLOBALS['smap_dup_publish'])) {
                $GLOBALS['smap_dup_publish'][]=$postid;
                xyz_link_publish($postid);
            }
        }

    }
    else return;        

}

/*$xyz_smap_include_customposttypes=get_option('xyz_smap_include_customposttypes');
$carr=explode(',', $xyz_smap_include_customposttypes);
foreach ($carr  as $cstyps ) {
    add_action('publish_'.$cstyps, 'xyz_link_publish');

}*/

function xyz_link_publish($post_ID) {

    $_POST_CPY=$_POST;
    $_POST=stripslashes_deep($_POST);

    $post_permissin=get_option('xyz_smap_post_permission');
    if(isset($_POST['xyz_smap_post_permission']))
        $post_permissin=intval($_POST['xyz_smap_post_permission']);

    $post_Twitter_permission=get_option('xyz_smap_twpost_permission');
    if(isset($_POST['xyz_smap_twpost_permission']))
        $post_Twitter_permission=intval($_POST['xyz_smap_twpost_permission']);

    $lnpost_permission=get_option('xyz_smap_lnpost_permission');
    if(isset($_POST['xyz_smap_lnpost_permission']))
        $lnpost_permission=intval($_POST['xyz_smap_lnpost_permission']);

    if (($post_permissin != 1)&&($post_Twitter_permission != 1)&&($lnpost_permission != 1)) {
        $_POST=$_POST_CPY;
        return ;

    } else if (isset($_POST['_inline_edit']) AND (get_option('xyz_smap_default_selection_edit') == 0) ) {
        $_POST=$_POST_CPY;
        return;
    }



    $get_post_meta=get_post_meta($post_ID,"xyz_smap",true);
    if($get_post_meta!=1)
        add_post_meta($post_ID, "xyz_smap", "1");

    global $current_user;
    wp_get_current_user();
    $af=get_option('xyz_smap_af');


/////////////Twitter//////////
    $tappid=get_option('xyz_smap_twconsumer_id');
    $tappsecret=get_option('xyz_smap_twconsumer_secret');
    $twid=get_option('xyz_smap_tw_id');
    $taccess_token=get_option('xyz_smap_current_twappln_token');
    $taccess_token_secret=get_option('xyz_smap_twaccestok_secret');
    $messagetopost=get_option('xyz_smap_twmessage');
    if(isset($_POST['xyz_smap_twmessage']))
        $messagetopost=$_POST['xyz_smap_twmessage'];
    $appid=get_option('xyz_smap_application_id');


    $post_Twitter_image_permission=get_option('xyz_smap_twpost_image_permission');
    if(isset($_POST['xyz_smap_twpost_image_permission']))
        $post_Twitter_image_permission=intval($_POST['xyz_smap_twpost_image_permission']);
        ////////////////////////

    ////////////fb///////////
    $app_name=get_option('xyz_smap_application_name');
    $appsecret=get_option('xyz_smap_application_secret');
    $useracces_token=get_option('xyz_smap_fb_token');


    $message=get_option('xyz_smap_message');
    if(isset($_POST['xyz_smap_message']))
        $message=$_POST['xyz_smap_message'];
    //$fbid=get_option('xyz_smap_fb_id');



    $posting_method=get_option('xyz_smap_po_method');
    if(isset($_POST['xyz_smap_po_method']))
        $posting_method=intval($_POST['xyz_smap_po_method']);
        //////////////////////////////

    ////////////linkedin////////////

    $lnappikey=get_option('xyz_smap_lnapikey');
    $lnapisecret=get_option('xyz_smap_lnapisecret');
    $lmessagetopost=get_option('xyz_smap_lnmessage');
    if(isset($_POST['xyz_smap_lnmessage']))
        $lmessagetopost=$_POST['xyz_smap_lnmessage'];

  $xyz_smap_ln_shareprivate=get_option('xyz_smap_ln_shareprivate'); 
  if(isset($_POST['xyz_smap_ln_shareprivate']))
  $xyz_smap_ln_shareprivate=intval($_POST['xyz_smap_ln_shareprivate']);

  $xyz_smap_ln_sharingmethod=get_option('xyz_smap_ln_sharingmethod');
  if(isset($_POST['xyz_smap_ln_sharingmethod']))
  $xyz_smap_ln_sharingmethod=intval($_POST['xyz_smap_ln_sharingmethod']);


  $post_ln_image_permission=get_option('xyz_smap_lnpost_image_permission');
  if(isset($_POST['xyz_smap_lnpost_image_permission']))
    $post_ln_image_permission=intval($_POST['xyz_smap_lnpost_image_permission']);

    $lnaf=get_option('xyz_smap_lnaf');

    $postpp= get_post($post_ID);global $wpdb;
    $reg_exUrl = "/(http|https)\:\/\/[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(\/\S*)?/";
    $entries0 = $wpdb->get_results( 'SELECT user_nicename FROM '.$wpdb->prefix.'users WHERE ID='.$postpp->post_author);
    foreach( $entries0 as $entry ) {            
        $user_nicename=$entry->user_nicename;}

    if ($postpp->post_status == 'publish')
    {
        $posttype=$postpp->post_type;
        $fb_publish_status=array();
        $ln_publish_status=array();
        $tw_publish_status=array();
        if ($posttype=="page")
        {

            $xyz_smap_include_pages=get_option('xyz_smap_include_pages');
            if($xyz_smap_include_pages==0)
            {$_POST=$_POST_CPY;return;}
        }

        else if($posttype=="post")
        {
            $xyz_smap_include_posts=get_option('xyz_smap_include_posts');
            if($xyz_smap_include_posts==0)
            {
                $_POST=$_POST_CPY;return;
            }

            $xyz_smap_include_categories=get_option('xyz_smap_include_categories');
            if($xyz_smap_include_categories!="All")
            {
                $carr1=explode(',', $xyz_smap_include_categories);

                $defaults = array('fields' => 'ids');
                $carr2=wp_get_post_categories( $post_ID, $defaults );
                $retflag=1;
                foreach ($carr2 as $key=>$catg_ids)
                {
                    if(in_array($catg_ids, $carr1))
                        $retflag=0;
                }


                if($retflag==1)
                {$_POST=$_POST_CPY;return;}
            }
        }

        else
        {

            $xyz_smap_include_customposttypes=get_option('xyz_smap_include_customposttypes');
            if($xyz_smap_include_customposttypes!='')
            {
                $carr=explode(',', $xyz_smap_include_customposttypes);

                if(!in_array($posttype, $carr))
                {
                    $_POST=$_POST_CPY;return;
                }
            }
            else
            {
                $_POST=$_POST_CPY;return;
            }

        }

        include_once ABSPATH.'wp-admin/includes/plugin.php';
        $pluginName = 'bitly/bitly.php';

        if (is_plugin_active($pluginName)) {
            remove_all_filters('post_link');
        }
    $link = get_permalink($postpp->ID);

        $xyz_smap_apply_filters=get_option('xyz_smap_std_apply_filters');
        $ar2=explode(",",$xyz_smap_apply_filters);
        $con_flag=$exc_flag=$tit_flag=0;
        if(isset($ar2))
        {
            if(in_array(1, $ar2)) $con_flag=1;
            if(in_array(2, $ar2)) $exc_flag=1;
            if(in_array(3, $ar2)) $tit_flag=1;
        }

        $content = $postpp->post_content;
        if($con_flag==1)
            $content = apply_filters('the_content', $content);
        $content = html_entity_decode($content, ENT_QUOTES, get_bloginfo('charset'));
        $excerpt = $postpp->post_excerpt;
        if($exc_flag==1)
            $excerpt = apply_filters('the_excerpt', $excerpt);
        $excerpt = html_entity_decode($excerpt, ENT_QUOTES, get_bloginfo('charset'));
        $content = preg_replace('/<script\b[^>]*>(.*?)<\/script>/is', "", $content);
        $content=  preg_replace("/\\[caption.*?\\].*?\\[.caption\\]/is", "", $content);
        $content = preg_replace('/\[.+?\]/', '', $content);
        $excerpt = preg_replace('/<script\b[^>]*>(.*?)<\/script>/is', "", $excerpt);

        if($excerpt=="")
        {
            if($content!="")
            {
                $content1=$content;
                $content1=strip_tags($content1);
                $content1=strip_shortcodes($content1);

                $excerpt=implode(' ', array_slice(explode(' ', $content1), 0, 50));
            }
        }
        else
        {
            $excerpt=strip_tags($excerpt);
            $excerpt=strip_shortcodes($excerpt);
        }
        $description = $content;

        $description_org=$description;
        $attachmenturl=xyz_smap_getimage($post_ID, $postpp->post_content);
        if($attachmenturl!="")
            $image_found=1;
        else
            $image_found=0;

        $name = $postpp->post_title;
        $xyz_smap_caption_for_fb_attachment=get_option('xyz_smap_caption_for_fb_attachment');

        if($xyz_smap_caption_for_fb_attachment==1)
            $caption=$_SERVER['HTTP_Host'];
            else
            $caption=get_bloginfo('title');
            $caption = html_entity_decode($caption, ENT_QUOTES, get_bloginfo('charset'));


        if($tit_flag==1)
            $name = apply_filters('the_title', $name);
        $name = html_entity_decode($name, ENT_QUOTES, get_bloginfo('charset'));
        $name=strip_tags($name);
        $name=strip_shortcodes($name);

        $description=strip_tags($description);      
        $description=strip_shortcodes($description);

        $description=str_replace("&nbsp;","",$description);

        $excerpt=str_replace("&nbsp;","",$excerpt);
        if($useracces_token!="" && $appsecret!="" && $appid!="" && $post_permissin==1)
        {
            $descriptionfb_li=xyz_smap_string_limit($description, 10000);

            $user_page_id=get_option('xyz_smap_fb_numericid');

            $xyz_smap_pages_ids=get_option('xyz_smap_pages_ids');
            if($xyz_smap_pages_ids=="")
                $xyz_smap_pages_ids=-1;

            $xyz_smap_pages_ids1=explode(",",$xyz_smap_pages_ids);


            foreach ($xyz_smap_pages_ids1 as $key=>$value)
            {
                if($value!=-1)
                {
                    $value1=explode("-",$value);
                    $acces_token=$value1[1];$page_id=$value1[0];
                }
                else
                {
                    $acces_token=$useracces_token;$page_id=$user_page_id;
                }

                $fb=new Facebook\Facebook(array(
                        'app_id'  => $appid,
                        'app_secret' => $appsecret,
                        'cookie' => true
                ));
                $message1=str_replace('{POST_TITLE}', $name, $message);
                $message2=str_replace('{BLOG_TITLE}', $caption,$message1);
                $message3=str_replace('{PERMALINK}', $link, $message2);
                $message4=str_replace('{POST_EXCERPT}', $excerpt, $message3);
                $message5=str_replace('{POST_CONTENT}', $description, $message4);
                $message5=str_replace('{USER_NICENAME}', $user_nicename, $message5);
                $message5=str_replace('{POST_ID}', $post_ID, $message5);
                $publish_time=get_the_time('Y/m/d',$post_ID );
                $message5=str_replace('{POST_PUBLISH_DATE}', $publish_time, $message5);
                $message5=str_replace("&nbsp;","",$message5);
               $disp_type="feed";
                if($posting_method==1) //attach
                {
                    $attachment = array('message' => $message5,
                            'access_token' => $acces_token,
                            'link' => $link,
                            'name' => $name,
                            'caption' => $caption,
                            'description' => $descriptionfb_li,
                            'actions' => json_encode(array('name' => $name,
                            'link' => $link)),
                            'picture' => $attachmenturl

                    );
                }
                else if($posting_method==2)  //share link
                {
                    $attachment = array('message' => $message5,
                            'access_token' => $acces_token,
                            'link' => $link,
                            'name' => $name,
                            'caption' => $caption,
                            'description' => $descriptionfb_li,
                            'picture' => $attachmenturl


                    );
                }
                else if($posting_method==3) //simple text message
                {

                    $attachment = array('message' => $message5,
                            'access_token' => $acces_token              

                    );

                }
                else if($posting_method==4 || $posting_method==5) //text message with image 4 - app album, 5-timeline
                {
                    if($attachmenturl!="")
                    {


                        if($posting_method==5)
                        {
                            try{
                                $album_fount=0;

                                $albums = $fb->get("/$page_id/albums", $acces_token);
                                $arrayResults = $albums->getGraphEdge()->asArray();


                            }
                            catch (Exception $e)
                            {
                                $fb_publish_status[$page_id."/albums"]=$e->getMessage();
                                    }
                            if(isset($arrayResults))
                            {
                                foreach ($arrayResults as $album) {
                                    if (isset($album["name"]) && $album["name"] == "Timeline Photos") {
                                        $album_fount=1;$timeline_album = $album; break;
                                    }
                                }
                            }
                            if (isset($timeline_album) && isset($timeline_album["id"])) $page_id = $timeline_album["id"];
                            if($album_fount==0)
                            {
                                $attachment = array('name' => "Timeline Photos",
                                        'access_token' => $acces_token,
                                );
                                try{
                                    $album_create=$fb->post('/'.$page_id.'/albums', $attachment);
                                    $album_node=$album_create->getGraphNode();
                                    if (isset($album_node) && isset($album_node["id"]))
                                        $page_id = $album_node["id"];
                                }
                                catch (Exception $e)
                                {
                                    $fb_publish_status[$page_id."/albums"]=$e->getMessage();

                                }

                            }
                        }
                        else
                        {
                            try{
                                $album_fount=0;

                                $albums = $fb->get("/$page_id/albums", $acces_token);
                                $arrayResults = $albums->getGraphEdge()->asArray();

                            }
                            catch (Exception $e)
                            {
                                $fb_publish_status[$page_id."/albums"]=$e->getMessage();                    
                            }
                            if(isset($arrayResults))
                            {
                                foreach ($arrayResults as $album)
                                {
                                    if (isset($album["name"]) && $album["name"] == $app_name) {
                                        $album_fount=1;
                                        $app_album = $album; break;
                                    }
                                }

                            }
                            if (isset($app_album) && isset($app_album["id"])) $page_id = $app_album["id"];
                            if($album_fount==0)
                            {
                                $attachment = array('name' => $app_name,
                                        'access_token' => $acces_token,
                                );
                                try{
                                    $album_create=$fb->post('/'.$page_id.'/albums', $attachment);
                                    $album_node=$album_create->getGraphNode();
                                    if (isset($album_node) && isset($album_node["id"]))
                                        $page_id = $album_node["id"];
                                }
                                catch (Exception $e)
                                {
                                    $fb_publish_status[$page_id."/albums"]=$e->getMessage();
                                }

                            }
                        }


                        $disp_type="photos";
                        $attachment = array('message' => $message5,
                                'access_token' => $acces_token,
                                'url' => $attachmenturl 

                        );
                    }
                    else
                    {
                        $attachment = array('message' => $message5,
                                'access_token' => $acces_token

                        );
                    }

                }

                if($posting_method==1 || $posting_method==2)
                {

                    $attachment=xyz_wp_fbap_attachment_metas($attachment,$link);
                    update_post_meta($post_ID, "xyz_smap_insert_og", "1");
                }
                try{
                $result = $fb->post('/'.$page_id.'/'.$disp_type.'/', $attachment);}
                            catch(Exception $e)
                            {
                                $fb_publish_status[$page_id."/".$disp_type]=$e->getMessage();
                            }

            }

            if(count($fb_publish_status)>0)
              $fb_publish_status_insert=serialize($fb_publish_status);
            else
                $fb_publish_status_insert=1;

            $time=time();
            $post_fb_options=array(
                    'postid'    =>  $post_ID,
                    'acc_type'  =>  "Facebook",
                    'publishtime'   =>  $time,
                    'status'    =>  $fb_publish_status_insert
            );

            $smap_fb_update_opt_array=array();

            $smap_fb_arr_retrive=(get_option('xyz_smap_fbap_post_logs'));

            $smap_fb_update_opt_array[0]=isset($smap_fb_arr_retrive[0]) ? $smap_fb_arr_retrive[0] : '';
            $smap_fb_update_opt_array[1]=isset($smap_fb_arr_retrive[1]) ? $smap_fb_arr_retrive[1] : '';
            $smap_fb_update_opt_array[2]=isset($smap_fb_arr_retrive[2]) ? $smap_fb_arr_retrive[2] : '';
            $smap_fb_update_opt_array[3]=isset($smap_fb_arr_retrive[3]) ? $smap_fb_arr_retrive[3] : '';
            $smap_fb_update_opt_array[4]=isset($smap_fb_arr_retrive[4]) ? $smap_fb_arr_retrive[4] : '';

            array_shift($smap_fb_update_opt_array);
            array_Push($smap_fb_update_opt_array,$post_fb_options);
            update_option('xyz_smap_fbap_post_logs', $smap_fb_update_opt_array);




        }

...........制限のためにコードがトリミングされました

1番目のプラグインから$ shortlinkを取得するにはどうすればよいですか?2番目のプラグインの$ linkに値を保存します。 Thnx私は前進します!

1
Vik

ショートリンクが作成されると、次の行でアクションが実行されます。

do_action('fts_use_shortlink', $post_id, $shortlink);

次に、このコードを使用してアクションにコードをフックできます。 2番目のプラグインで:

add_action("fts_use_shortlink", function ($post_id, $shortlink) {

    // here you can use $shortlink


}, 10, 2);
// 10 is the priority when there is several hooks
// 2 is here for the 2 arguments $post_id and $shortlink
1
mmm